标签: java-8

使用条件从另一个列表中删除嵌套列表中的元素 - Java 8

我想从具有来自另一个列表的条件值的列表中删除项目。这是对象

public class Student{
    
    private String name;
    private String age;
    private List<Course> listCourses;
    
    //Setters and getters
    
}
    
public Class Course{
    
    private String courseName;
    private List<CourseDetail> listCoursesDetail;
    
    //Setters and getters
}
    
public Class CourseDetail{
    
    private String id;
    private String grade;
    private String professor;
    
    //Setters and getters
    
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,该对象Student有一个列表,该列表内还有来自对象 CourseDetail 的另一个列表。我想要实现的是过滤或删除 private 中的元素List<CourseDetail> listCoursesDetail,其中 ID 不等于其他对象的 id。

public class Process{
    
    private String name;
    private List<ProcessDetail> listProcessDetail;
    
    //Setters and getters
    
}
    
public class ProcessDetail{

    private String id;
    
    //Setters and …
Run Code Online (Sandbox Code Playgroud)

java list filter java-8 java-stream

3
推荐指数
1
解决办法
2867
查看次数

如果key存在且value不为null则放入map中,否则抛出异常

void addToMapIfKeyExists(String k, String v) {
    if (!map.containsKey(k)) {
        throw new NoSuchElementException(k + " does not exist in the map");
    }

    // else ignore
    if (v != null) {
        map.put(k, v);
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以在 Java 8 中以更好的方式编写这个吗?我可以通过某种方式将其合并为一个表达式吗?

java hashmap java-8

3
推荐指数
1
解决办法
7769
查看次数

从 JSONObject 中删除除一个之外的所有键

我有一个像这样的 JSONObject (org.json):

{
    "a": "a",
    "b": "a",
    "c": "a",
    "d": "a",
    "e": "a",
    "f": "a",
    "g": "a",
    ...
}
Run Code Online (Sandbox Code Playgroud)

我想删除除 之外的所有键a。除了我天真的方法之外,还有其他优雅的方法吗?

Iterator<String> keys = jsonObject.keys();
while (keys.hasNext()) {
    if (!keys.next().equals("a")) {
        keys.remove();
    }
}
Run Code Online (Sandbox Code Playgroud)

预期输出:

{"a": "a"}
Run Code Online (Sandbox Code Playgroud)

java json java-8

3
推荐指数
1
解决办法
3161
查看次数

如何将java应用程序从oracle jdk迁移到openjdk?

我们有一个java应用程序部署在jboss应用服务器上,使用java 1.8.0_202版本,现在我们想将其更改为openjdk。我该如何改变?是否需要更改任何代码?请帮我完成要执行的步骤?

提前致谢..

java jboss java-8

3
推荐指数
1
解决办法
1226
查看次数

如何获取先科的ZoneId?

我需要从文件中解析时区,其中指定的区域如下:UTC、SAST 等。

问题:虽然ZoneId.of("UTC")效果很好,但我不能对 SAST 做同样的事情。

我明白了java.time.zone.ZoneRulesException: Unknown time-zone ID: SAST

问题:如何将“SAST”字符串转换为 Java 字符串ZoneId

我知道,每次收到它时我都可以用“GMT+2”替换“SAST”,但如果有更优雅的方式那就太好了。

java timezone java-8 java-time

3
推荐指数
1
解决办法
1489
查看次数

参数类型为 A 或 B 的类

我试图用类型为 A 或 B 的类作为参数,仅此而已。

就像是

final class ChildClass<A | B> extends MotherClass {
Run Code Online (Sandbox Code Playgroud)

这样我就可以创建 aChildClass<A>或 aChildClass<B>但不能创建其他任何东西。

在Java中可以吗?


编辑:

我必须指定我正在使用 Java 8,并且我无法控制类 A 和 B(它们是我正在使用的 Android 框架的类)。

java generics java-8

3
推荐指数
1
解决办法
1762
查看次数

openjdk-8-jdk - 缺少 src.zip?

以下是所需信息 -

apt list  | grep installed | grep -i openjdk-8-jdk

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

openjdk-8-jdk-headless/focal-security,focal-security,now 8u265-b01-0ubuntu2~20.04 amd64 [installed,automatic]
openjdk-8-jdk/focal-security,focal-security,now 8u265-b01-0ubuntu2~20.04 amd64 [installed]
Run Code Online (Sandbox Code Playgroud)

为了查询已安装的二进制文件,我尝试了以下 -

$ dpkg -L openjdk-8-jdk
/.
/usr
/usr/lib
/usr/lib/jvm
/usr/lib/jvm/java-8-openjdk-amd64
/usr/lib/jvm/java-8-openjdk-amd64/bin
/usr/lib/jvm/java-8-openjdk-amd64/bin/appletviewer
/usr/lib/jvm/java-8-openjdk-amd64/bin/jconsole
/usr/lib/jvm/java-8-openjdk-amd64/include
/usr/lib/jvm/java-8-openjdk-amd64/include/jawt.h
/usr/lib/jvm/java-8-openjdk-amd64/include/linux
/usr/lib/jvm/java-8-openjdk-amd64/include/linux/jawt_md.h
/usr/lib/jvm/java-8-openjdk-amd64/lib
/usr/lib/jvm/java-8-openjdk-amd64/lib/jconsole.jar
/usr/lib/jvm/java-8-openjdk-amd64/man
/usr/lib/jvm/java-8-openjdk-amd64/man/ja_JP.UTF-8
/usr/lib/jvm/java-8-openjdk-amd64/man/ja_JP.UTF-8/man1
/usr/lib/jvm/java-8-openjdk-amd64/man/ja_JP.UTF-8/man1/appletviewer.1.gz
/usr/lib/jvm/java-8-openjdk-amd64/man/ja_JP.UTF-8/man1/jconsole.1.gz
/usr/lib/jvm/java-8-openjdk-amd64/man/man1
/usr/lib/jvm/java-8-openjdk-amd64/man/man1/appletviewer.1.gz
/usr/lib/jvm/java-8-openjdk-amd64/man/man1/jconsole.1.gz
/usr/share
/usr/share/doc
/usr/share/doc/openjdk-8-jre-headless
/usr/share/doc/openjdk-8-jre-headless/test-amd64
/usr/share/doc/openjdk-8-jre-headless/test-amd64/check-hotspot-hotspot.log.gz
/usr/share/doc/openjdk-8-jre-headless/test-amd64/check-jdk-hotspot.log.gz
/usr/share/doc/openjdk-8-jre-headless/test-amd64/check-langtools-hotspot.log.gz
/usr/share/doc/openjdk-8-jre-headless/test-amd64/failed_tests-hotspot.tar.gz
/usr/share/doc/openjdk-8-jre-headless/test-amd64/jtreg-summary-hotspot.log.gz
/usr/share/doc/openjdk-8-jre-headless/test-amd64/jtreport-hotspot.tar.gz
/usr/share/doc/openjdk-8-jdk
Run Code Online (Sandbox Code Playgroud)

查看目录时jvm/java-8-openjdk-amd64,我发现链接已src.zip损坏

$ ll
total …
Run Code Online (Sandbox Code Playgroud)

java java-8

3
推荐指数
1
解决办法
2092
查看次数

在centos 7 dockerfile中安装java 8

我刚刚看了这个问题:How to Define OpenJDK 8 in CentOS based Dockerfile?

我尝试了建议的答案,但没有得到预期的结果。这是我的 DockerFile 的内容

FROM centos:7

RUN yum install -y \
       java-1.8.0-openjdk \
       java-1.8.0-openjdk-devel

ENV JAVA_HOME /etc/alternatives/jre
RUN yum install maven
RUN yum install curl 
RUN yum install -y unzip

Run Code Online (Sandbox Code Playgroud)

我通过以下方式构建图像:docker build -t container_image:latest -f DockerFile.build . 然后,当我运行docker run -it {image_id} /bin/bash 并执行时java --version,我得到bash: java: command not found. 有人可以帮我看看我在这里做错了什么吗?

另外,当我尝试通过容器内安装 jdk 时,yum install java-1.8.0-openjdk我得到以下信息

java --version
Unrecognized option: --version
Error: Could not …
Run Code Online (Sandbox Code Playgroud)

centos java-8 docker

3
推荐指数
1
解决办法
1万
查看次数

使用 Comparator.reversed() 反转流的排序顺序

我正在编写一个程序,读取一个字符串作为输入,然后输出 10 个最重复的单词。问题是,我的顺序颠倒了。我想从最高到最低输出,并且按相反顺序排序。所以我一直在寻找解决方案,我唯一发现的是 .reversed() 方法,但它说“不能从静态上下文引用非静态方法”。我不明白这个错误,因为在示例中它被用于类似的情况。

我是流新手,所以我想知道解决此问题的简单方法。

public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String input = scanner.nextLine();
        List<String> words = Arrays.asList(input.split(" "));
        words.stream()
                .map(word -> word.replaceAll("[^A-Za-z0-9]", ""))
                .map(String::toLowerCase)
                .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()))
                .entrySet()
                .stream()
                .sorted(Comparator.comparing(Map.Entry::getValue).reversed()) // static method can't be referenced
                .limit(10)
                .sorted(Comparator.comparing(Map.Entry::getKey))
                .forEach(e -> System.out.println(e.getKey()));
    }
Run Code Online (Sandbox Code Playgroud)

编辑:我已经将地图的键和值混合并进行了编辑。由于我的错误,Arvind 的答案可能看起来有点不同,但这并不重要,因为 Map.Entry 同时具有 .comparingByKey 和 .comparingByValue 方法。

java comparator java-8 java-stream

3
推荐指数
1
解决办法
1036
查看次数

包 javax.xml.bind.annotation 不存在错误

我正在尝试运行“ mvn clean install ”命令,但出现以下错误:

java:[42,22] 包 javax.xml.bind 不存在

你知道为什么吗?

java maven java-8 java-11

3
推荐指数
1
解决办法
4万
查看次数