306得票9回答
为什么Stream<T>没有实现Iterable<T>接口?

在Java 8中,我们有一个名为Stream&lt;T&gt;的类,这个类奇妙地拥有一个方法。 Iterator&lt;T&gt; iterator() 您会期望它实现接口Iterable&lt;T&gt;,该接口需要正好这个方法,但事实并非如此。 当我想使用foreach循环迭代St...

304得票3回答
Java 8方法引用:提供一个能够提供参数化结果的供应商

我想要使用java.util.Optional.orElseThrow() 使用要求构造函数参数的异常类型。类似于这样:.orElseThrow(MyException::new(someArgument)) // obviously NOT working 有没有一种方法可以创建一个Supp...

293得票20回答
如何将List转换为Map?

最近我和一位同事讨论了在Java中将List转换为Map的最佳方式以及这样做是否有特定的好处。 我想知道最佳的转换方法,并且非常感谢任何人能够指导我。 这种方法可行吗:List&lt;Object[]&gt; results; Map&lt;Integer, String&gt; result...

283得票10回答
Java 8:使用流/映射-归约/收集器将HashMap<X,Y>转换为HashMap<X,Z>

我知道如何将一个简单的Java List从Y转换为Z,即:List&lt;String&gt; x; List&lt;Integer&gt; y = x.stream() .map(s -&gt; Integer.parseInt(s)) .collect(Co...

279得票15回答
使用流将对象列表转换为从toString方法获取的字符串

Java 8中有许多有用的新功能。例如,我可以使用流迭代遍历对象列表,然后对Object实例的特定字段的值进行求和。例如:public class AClass { private int value; public int getValue() { return value; } }...

271得票3回答
为什么 Iterable<T> 没有提供 stream() 和 parallelStream() 方法?

我想知道为什么Iterable接口没有提供stream()和parallelStream()方法。考虑以下类: public class Hand implements Iterable&lt;Card&gt; { private final List&lt;Card&gt; lis...

267得票13回答
如何使用Java8的lambda表达式将流按相反顺序排序?

我正在使用Java Lambda对列表进行排序。 如何以相反的方式进行排序? 我看到了这篇帖子,但我想使用Java 8 Lambda。 这是我的代码(我使用*-1作为hack):Arrays.asList(files).stream() .filter(file -&gt; is...

254得票8回答
Java Stream API - 最佳的列表转换方式:map 还是 forEach?

我有一个列表,名为myListToParse,我想要筛选其中的元素,并对每个元素应用一个方法,然后将结果添加到另一个列表myFinalList中。 通过Java 8中新增的Stream API,我发现可以有两种不同的方式来实现。我想知道哪一种方式更高效,并且了解为什么其中一种方式比另一种更好...

248得票6回答
为什么Java Streams只能使用一次?

与C#的IEnumerable不同,在Java中,流(stream)只能被“迭代”一次,并且任何对终端操作的调用都会关闭该流,使其无法再次使用。这种“特性”削弱了其很多功能。 我想,这种限制背后的原因并不是技术性的。这种奇怪的限制背后有哪些设计考虑? 编辑:为了证明我所说的,请考虑在C#中...

232得票7回答
Java 8:如何在流中处理抛出异常的方法?

假设我有一个类和一个方法class A { void foo() throws Exception() { ... } } 现在我想为流传递的每个A实例调用foo: void bar() throws Exception { Stream&lt;A&gt; as = .....