我想从具有来自另一个列表的条件值的列表中删除项目。这是对象
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) 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 中以更好的方式编写这个吗?我可以通过某种方式将其合并为一个表达式吗?
我有一个像这样的 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应用程序部署在jboss应用服务器上,使用java 1.8.0_202版本,现在我们想将其更改为openjdk。我该如何改变?是否需要更改任何代码?请帮我完成要执行的步骤?
提前致谢..
我需要从文件中解析时区,其中指定的区域如下:UTC、SAST 等。
问题:虽然ZoneId.of("UTC")效果很好,但我不能对 SAST 做同样的事情。
我明白了java.time.zone.ZoneRulesException: Unknown time-zone ID: SAST。
问题:如何将“SAST”字符串转换为 Java 字符串ZoneId?
我知道,每次收到它时我都可以用“GMT+2”替换“SAST”,但如果有更优雅的方式那就太好了。
我试图用类型为 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 框架的类)。
以下是所需信息 -
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) 我刚刚看了这个问题: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) 我正在编写一个程序,读取一个字符串作为输入,然后输出 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 方法。
我正在尝试运行“ mvn clean install ”命令,但出现以下错误:
java:[42,22] 包 javax.xml.bind 不存在
你知道为什么吗?