做心理咨询的网站,wordpress 更换空间,阿里云建网站,决定网站打开的速度在本文中#xff0c;我将向您展示如何在标准Java映射上有效地实现Speedment Open Source流#xff0c;并将Stream接口扩展为MapStream#xff01; 即使在复杂的情况下#xff0c;此添加将使保持流的具体性和可读性变得更加容易。 希望这将允许您继续流式传输而不会过早收集… 在本文中我将向您展示如何在标准Java映射上有效地实现Speedment Open Source流并将Stream接口扩展为MapStream 即使在复杂的情况下此添加将使保持流的具体性和可读性变得更加容易。 希望这将允许您继续流式传输而不会过早收集结果。 Java 8中最大的功能之一就是能够流化对象集合。 通过将.stream方法添加到Collection接口中使用此新功能突然扩展了Java语言中的每个集合。 其他数据结构例如Map-interface不会实现该方法因为它们并不是严格意义上的集合。 MapStream将使用两个类型参数一个键和一个值。 通过指定Map.Entry KV作为类型参数它还将扩展标准Stream接口。 这将允许我们直接从任何Java映射构造MapStream。 public interface MapStreamK, V extends StreamMap.EntryK, V {...
} 多态性的概念告诉我们只要新的返回类型是旧的返回类型的更具体的实现子组件就可以更改覆盖方法的返回类型。 我们将在定义MapStream接口时使用它以便对于每个链接操作都返回MapStream而不是Stream。 public interface MapStreamK, V extends StreamMap.EntryK, V {Override MapStreamK, V filter(Predicate? super Map.EntryK, V predicate);Override MapStreamK, V distinct();OverrideMapStreamK, V sorted(Comparator? super Map.EntryK, V comparator);...
} 某些操作仍将需要返回普通Stream。 如果操作更改了流元素的类型则我们无法确保新类型将是Map.Entry。 但是我们可以添加其他方法以在具有键-值对的类型之间进行映射。 OverrideR StreamR map(Function? super Map.EntryK, V, ? extends R mapper);R StreamR map(BiFunction? super K, ? super V, ? extends R mapper); 除了允许用户从条目映射到其他内容的功能外他她还可以从键值对映射到其他内容。 当然这很方便但是由于我们正在使用值对因此我们还可以添加更多特定的映射操作。 R MapStreamR, V mapKey(BiFunction? super K, ? super V, ? extends R mapper);R MapStreamK, R mapValue(BiFunction? super K, ? super V, ? extends R mapper); 看起来差别不大但是使用API时差别显而易见 // With MapsStream
final MapString, ListLong map ...;
MapStream.of(map).mapKey((k, v) - k ( v.size() )).flatMapValue((k, v) - v.stream()).map((k, v) - k v).collect(System.out::println);// Without MapStream
final MapString, ListLong map ...;
map.entrySet().stream().map(e - new AbstractMap.SimpleEntry(e.getKey() ( e.getValue().size() )),e.getValue())).flatMap(e - e.getValue().stream().map(v - new AbstractMap.SimpleEntry(e.getKey(), v))).map(e - e.getKey() e.getValue()).collect(System.out::println); 可以在此处找到 MapStream的完整实现。 如果您对更酷的东西感兴趣请查看Speedment Github页面 。 玩得开心 翻译自: https://www.javacodegeeks.com/2016/02/streaming-maps-java-8.html