小编Nam*_*man的帖子

检查数组列表是否包含两个字符串

我有一个像下面这样的 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)

java for-loop java-stream

2
推荐指数
2
解决办法
97
查看次数

使用 Java 8 迭代 Map&lt;String,Object&gt; 数组并返回 Map&lt;Long,Long&gt;

我有一个地图数组。其中我需要做一些计算并返回另一个 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)

java lambda java-8 java-stream

2
推荐指数
1
解决办法
474
查看次数

获取自 Java 9 以来使用的 JRE 的供应商

直到 8 日,才有可能得到一些关于所用 JRE 的供应商的信息,如下所示:

String vendor = Runtime.class.getPackage().getImplementationVendor().
Run Code Online (Sandbox Code Playgroud)

自 Java 9 和 Java Module System 的引入以来,上面的方法调用总是返回 null

如何获得与当前 Java 平台相同的信息?

java java-platform-module-system java-9

2
推荐指数
1
解决办法
46
查看次数

在 Java 17 switch-case 中使用 Final 变量的好处

有人可以告诉我 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 好得多。所以我没有看到新语言结构的好处。

java switch-statement constant-expression java-17

2
推荐指数
1
解决办法
1687
查看次数

没有设置ANDROID_HOME?

我目前正在建立一个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的路径。我究竟做错了什么?

android path environment-variables

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

@NotNull 对参数的 Getter 和 Setter 的影响

相信并使用我应该使用哪个 @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检查是不是多余的,(如果不是)想知道 …

java getter-setter notnull

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

从@RequestHeader 与 HttpServletRequest 获取标头

@RequestHeaderannotation读取 header 数据与从annotation读取头数据有什么区别HttpServletRequest

spring spring-mvc

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

在java 9中创建模块项目的问题

我试图在教程之后使用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:没有源文件.路径错了还是我应该输入不同的命令?

java java-9 java-module

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

Maven构建在测试执行期间抛出java.lang.ClassNotFoundException

我有带有集成测试的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)

java testing junit

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

未知的源Java 10

我在运行以下代码时遇到错误:

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 java-stream

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