相关疑难解决方法(0)

如何比较Java中的字符串?

==到目前为止,我一直在我的程序中使用运算符来比较我的所有字符串.但是,我遇到了一个错误,将其中一个更改为了.equals(),并修复了该错误.

==坏?什么时候应该不应该使用它?有什么不同?

java string equality

726
推荐指数
23
解决办法
376万
查看次数

我应该尽可能使用并行流吗?

使用Java 8和lambdas,可以很容易地将集合作为流进行迭代,并且易于使用并行流.来自docs的两个例子,第二个使用parallelStream:

myShapesCollection.stream()
    .filter(e -> e.getColor() == Color.RED)
    .forEach(e -> System.out.println(e.getName()));

myShapesCollection.parallelStream() // <-- This one uses parallel
    .filter(e -> e.getColor() == Color.RED)
    .forEach(e -> System.out.println(e.getName()));
Run Code Online (Sandbox Code Playgroud)

只要我不关心顺序,使用并行是否总是有益的?人们会认为将更多核心的工作划分得更快.

还有其他考虑因素吗?什么时候应该使用并行流?什么时候应该使用非并行?

(这个问题被要求引发关于如何以及何时使用并行流的讨论,而不是因为我认为总是使用它们是一个好主意.)

java parallel-processing java-8 java-stream

455
推荐指数
5
解决办法
14万
查看次数

使用gradle-retrolambda和Lightweight-Stream-API过滤Android中的对象列表

我试图在我的Android应用程序中过滤Java中的对象列表,为此我遵循了这个答案(Java 8建议),但由于Android SDK中不支持Lambdas,我使用了gradle-retrolambda但是我得到了这个运行时 -错误
java.lang.NoSuchMethodError: No interface method stream()Ljava/util/stream/Stream; in class Ljava/util/List; or its super classes (declaration of 'java.util.List' appears in /system/framework/core-libart.jar)

这是我正在使用的代码行:

List<CaseDetails> closedCaseDetailsList = caseDetailsList.stream().filter(item -> item.caseClosed.equals(true)).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

我相信它应该工作,因为gradle-retrolambda应该在Java7上处理Lambdas.

接下来,根据Lightweight-Stream-API的用法,我尝试了Lightweight-Stream-API以及gradle-retrolambda并稍微改变了我的代码

List<CaseDetails> closedCaseDetailsList = Stream.of(caseDetailsList).filter(item -> item.caseClosed.equals(true)).collect(Collectors.toList());  
Run Code Online (Sandbox Code Playgroud)

但它给我一个错误的Collectors.toList()说法

collect
(com.annimon.stream.Collector<? super com.example.yankee.cw.CaseDetails,java.lang.Object,java.lang.Object>)
in Stream cannot be applied
to
 (java.util.stream.Collector<T,capture<?>,java.util.List<T>>) 
Run Code Online (Sandbox Code Playgroud)

我也尝试过明确地输入类型Stream,List<CaseDetails>但是当然没有用.

我尝试了Slack社区,SO聊天室,但找不到解决方案.我发现问题的最接近的是这个问题,但这是一个不同的错误.
谢谢

java lambda android java-8

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