我有一个像下面这样的 pojo 课程
public CategoryModel {
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
}
Run Code Online (Sandbox Code Playgroud)
我创建了一个数组列表,如下所示。
List<CategoryModel> variantCategoryModelList = new ArrayList<>();
CategoryModel cat1= new CategoryModel();
cat1.setName(TEST1);
CategoryModel cat2= new CategoryModel();
cat2.setName(TEST1);
list.add(cat1);
list.add(cat2);
Run Code Online (Sandbox Code Playgroud)
我必须检查值“TEST1”和“TEST2”是否存在于列表中,如果两个值都存在于“列表”中,则返回“真”,我尝试了类似下面的方法,尽管我的“列表”同时具有值,它返回false。你能帮我检查一下我做错了什么顺便说一句我使用的是JDK 11。
final Optional<CategoryModel> optionalData = variantCategoryModelList.stream().
filter(valueData -> TEST1.equalsIgnoreCase(valueData.getName())
&& TEST2.equalsIgnoreCase(valueData.getName())).findFirst();
if(optionalData.isPresent()){
return true;
}
Run Code Online (Sandbox Code Playgroud) 我有一个地图数组。其中我需要做一些计算并返回另一个 Map 并将相同的键计数添加到结果中的值中。我试过下面的一个。但由于它是并行运行的,因此不会添加它。
请帮助改进它
我可以在正常的 for 循环中实现这一点。
public Map<Long,Long> solve(Map<String,Stats>... map){
Map<Long,Long> resultCount = new HashMap<Long,Long>();
if(map != null){
resultCount = Arrays.stream(map).filter(Objects::nonNull).map(map -> getUserCountMap(map))
.collect(HashMap::new, Map::putAll, Map::putAll);
}
return resultCount;
}
public Map<Long,Long> getUserCountMap(Map<String, Stats> map) {
Map<Long,Long> resultCount = new HashMap<Long,Long>();
map.forEach((k,v)->{
try {
String key = (String) k;
Stats userValue = (Stats) v;
Long userId = new Long(key);
System.out.println("key :::"+key+":::"+resultCount.getOrDefault(userId, 0l));
Optional<Long> count = userValue.getCount();
System.out.println(count.get());
count.ifPresent(aLong -> resultCount.put(userId, (resultCount.getOrDefault(userId, 0l) + aLong)));
System.out.println(resultCount);
} catch (Exception e) …Run Code Online (Sandbox Code Playgroud) 直到 8 日,才有可能得到一些关于所用 JRE 的供应商的信息,如下所示:
String vendor = Runtime.class.getPackage().getImplementationVendor().
Run Code Online (Sandbox Code Playgroud)
自 Java 9 和 Java Module System 的引入以来,上面的方法调用总是返回 null。
如何获得与当前 Java 平台相同的信息?
有人可以告诉我 Java 17 接受最终表达式作为 switch-case-constructs 中的 case 表达式但不接受最终表达式作为参数传递的好处吗?
void test(int distinction, final int foo) {
final var bar = 2;
switch (distinction) {
case foo -> doSomething(); // does not compile -> case expressions must be constant expressions
case bar -> doSomething(); // does compile
case 3 -> doOtherThings(); // does compile
}
}
Run Code Online (Sandbox Code Playgroud)
尽管 foo 和 bar 一样是最终变量,为什么编译器不接受情况 1?
在我看来,案例 3 的可读性比案例 2 好得多。所以我没有看到新语言结构的好处。
我目前正在建立一个Appium平台,但找不到自己的ANDROID_HOME道路。我已将sdk下载并安装在中Users/User/Android/sdk。我的bash_profile样子是这样的:
export PATH=$PATH:/usr/local/bin
export JAVA_HOME=$/usr/libexex/java_home
export ANDROID_HOME=Users/User/Library/Android/sdk
PATH=${PATH}:$ANDROID_HOME/tools:$ANDROID_HOME/platform_tools
echo $ANDROID_HOME
Run Code Online (Sandbox Code Playgroud)
当我运行Appium Doctor时,出现以下错误消息:
? ANDROID_HOME is set but does not exist on the file system at "Users/Toast/Library/Android/sdk"
这就是Android Studio中定义的SDK的路径。我究竟做错了什么?
相信并使用我应该使用哪个 @NotNull Java 注释?,我有一个类,其中某些字段标记为@NotNull[ package javax.validation.constraints] 以传递给客户端。该类还为这些字段实现了默认的 getter 和 setter。下面的示例类 -
public class MyClass
{
public MyClass() {
}
@NotNull
private String name;
private Boolean bool;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Boolean isBool() {
return bool;
}
public void setBool(Boolean bool) {
this.bool = bool;
}
}
Run Code Online (Sandbox Code Playgroud)
我对业务逻辑中 getter 的用法感到有些困惑 -
if(new MyClass().getName() !=null) {
//do something
}
Run Code Online (Sandbox Code Playgroud)
这个
null检查是不是多余的,(如果不是)想知道 …
从@RequestHeaderannotation读取 header 数据与从annotation读取头数据有什么区别HttpServletRequest?
我试图在教程之后使用Windows 10中的java命令设置一个基本的java项目.文件是
C:\Users\Talon\Desktop\java intellij\01j9\src\com.me.mymodule\module-info.java
C:\Users\Talon\Desktop\java intellij\01j9\src\com.me.mymodule\com\me\mymodule\Main.java
和一个空文件夹C:\Users\Talon\Desktop\java intellij\01j9\mods\com.me.mymodule.
module-info.java
module com.me.mymodule {}
Run Code Online (Sandbox Code Playgroud)
Main.java
package com.me.mymodule;
public class Main {
public static void main(String[] args) {
System.out.println("Hello World from Module");
}
}
Run Code Online (Sandbox Code Playgroud)
在'cd'进入C:\Users\Talon\Desktop\java intellij\01j9>
我应该进入的命令之后
javac -d mods/com.me.mymodule \ src/com.me.mymodule/module-info.java \ src/com.me.mymodule/com/me/mymodule/Main.java
Run Code Online (Sandbox Code Playgroud)
但它是为machintosh操作系统编写的,所以在windows中我尝试过
javac -d mods/com.me.mymodule;src/com.me.mymodule/module-info.java;src/com.me/mymodule/com/me/mymodule/Main.java
Run Code Online (Sandbox Code Playgroud)
和
javac -d mods\com.me.mymodule;src\com.me.mymodule\module-info.java;src\com.me\mymodule\com\me\mymodule\Main.java
Run Code Online (Sandbox Code Playgroud)
在两个我有javac:没有源文件.路径错了还是我应该输入不同的命令?
我有带有集成测试的spring-boot项目。我正在尝试转到JDK 9。在pom中进行了一些更改之后,我可以构建(跳过测试)并在Java 9上运行项目。但是,当我尝试执行集成测试时,出现了一个异常:
mvn全新安装:
[ERROR] Please refer to pathToProject\target\surefire-reports for the individual test results.
[ERROR] Please refer to dump files (if any exist) [date]-jvmRun[N].dump, [date].dumpstream and [date]-jvmRun[N].dumpstream.
[ERROR] There was an error in the forked process
[ERROR] java.lang.ClassNotFoundException: org.apache.maven.surefire.junit4.JUnit4Provider
[ERROR] org.apache.maven.surefire.booter.SurefireBooterForkException: There was an error in the forked process
[ERROR] java.lang.ClassNotFoundException: org.apache.maven.surefire.junit4.JUnit4Provider
[ERROR] at org.apache.maven.plugin.surefire.booterclient.ForkStarter.fork(ForkStarter.java:673)
[ERROR] at org.apache.maven.plugin.surefire.booterclient.ForkStarter.fork(ForkStarter.java:535)
[ERROR] at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:280)
[ERROR] at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:245)
[ERROR] at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeProvider(AbstractSurefireMojo.java:1124)
[ERROR] at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeAfterPreconditionsChecked(AbstractSurefireMojo.java:
[ERROR] at org.apache.maven.plugin.surefire.AbstractSurefireMojo.execute(AbstractSurefireMojo.java:832)
[ERROR] at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134) …Run Code Online (Sandbox Code Playgroud) 我在运行以下代码时遇到错误:
public class TestClass {
public static void main(String[] args) {
var list = new ArrayList<String>();
list.add("Harry");
list.add("Marry");
list.add(null);
list.add("Larry");
list.removeIf(e -> e.startsWith("H"));
list.forEach(System.out::println);
}
}
Run Code Online (Sandbox Code Playgroud)
获得以下错误:
Exception in thread "main" java.lang.NullPointerException
at test/test.TestClass.lambda$0(TestClass.java:14)
at java.base/java.util.ArrayList.removeIf(Unknown Source)
at java.base/java.util.ArrayList.removeIf(Unknown Source)
at test/test.TestClass.main(TestClass.java:14)
Run Code Online (Sandbox Code Playgroud)
为什么我得到了未知的源错误,如果我提供以下lambda它会正常工作:
list.removeIf(e -> e == null);
Run Code Online (Sandbox Code Playgroud) java ×8
java-stream ×3
java-9 ×2
android ×1
for-loop ×1
java-17 ×1
java-8 ×1
java-module ×1
java-platform-module-system ×1
junit ×1
lambda ×1
notnull ×1
path ×1
spring ×1
spring-mvc ×1
testing ×1