java-stream相关内容
我正在尝试对 Map 对象中的每个条目执行映射操作. 我需要从键中取出前缀并将值从一种类型转换为另一种类型.我的代码从 Map 获取配置条目并转换为 Map (AttributeType 只是一个类持有一些信息.进一步的解释与这个问题无关.) 使用 Java 8 Streams 我所能想到的最好的方法如下:
..
我正在使用 Files.lines(...) 读取一个非常大 (500mb) 的文件.它读取文件的一部分,但在某些时候它会因 java.io.UncheckedIOException: java.nio.charset.MalformedInputException: Input length = 1 而中断 我认为该文件有不同字符集的行.有没有办法跳过这些断线?我知道返回的流由 Reader
..
最近我更改了项目的 JDK 8 版本而不是 7 版本,现在我使用 Java 8 附带的新功能覆盖了一些代码片段. final Matcher mtr = Pattern.compile(regex).matcher(input);HashSetset = new HashSet() {{而 (mtr.find()) 添加(mtr.group().toLowerCase());}}; 如何使用
..
我有一个 List 并且想要一个 Guava Multimap 我们将 Foo 的每个标签分组集合getTags() 函数. 我使用的是 Java 8,因此 lambda 和方法引用很好/值得鼓励. 例如,如果我有: foo1, 标签=a,b,cfoo2,标签=c,dfoo3, 标签=a,c,e 我会得到一个 Multimap
..
我有一个这样的方法,我在 Streams 中使用递归: 私有静态列表convertToFlatList(列表成员列表){return memberList.stream().flatMap(i -> Stream.concat(Stream.of(i), convertToFlatList(i.getChildren()).stream())).collect(Collectors.toLis
..
我想接受一个输入并在其上应用并行流,然后我想输出为列表.输入可以是我们可以应用流的任何列表或任何集合. 我担心的是,如果我们想要输出作为映射它们,我们有一个来自 java 的选项,就像 list.parallelStream().collect(Collectors.toConcurrentMap(args)) 但是我看不到以线程安全的方式从并行流中收集以提供列表作为输出的选项.我在那里
..
我想从 Map 中提取一个 List (E 是随机的类)使用 stream(). 我想要一个使用 java 8 的流的简单单行方法. 到目前为止我所尝试的: HashMap>map = new HashMap();列出列表 = map.values();//不编译list = map.values().stream().collect(Collectors.toLis
..
在 Java 8 中,有没有办法根据条件在流上应用过滤器, 例子 我有这个直播 if (isAccessDisplayEnabled) {src = (List ) sourceMeta.getAllSources.parallelStream().filter(k - > isAccessDisplayEnabled((Source) k)).filter(k
..
用例 通过在工作中发布的一些编码 Katas,我偶然发现了这个我不知道如何解决的问题. 使用 Java 8 Streams,给定一个正整数列表,生成一个整数在较大值之前的整数列表. [10, 1, 15, 30, 2, 6] 上述输入将产生: [1, 15, 2] 因为 1 在 15 之前,15 在 30 之前,2 在 6 之前. 非流式解决方案 public List
..
请考虑以下代码: System.out.println("#1");Stream.of(0, 1, 2, 3).peek(e -> System.out.println(e)).sorted().findFirst();System.out.println("\n#2");IntStream.range(0, 4).peek(e -> System.out.println(e)).sorted(
..
我有一个类列表说 ProductDto 公共类 ProductDto {私有字符串 ID;私有字符串状态;私人布克订户;私有字符串类别;私有字符串类型;} 我想要一张如下图:- 地图> 属性映射如下: 地图 我知道使用 Collectors.groupingBy 可以轻松完成一级分组,没有任何麻烦. 我尝试将它用于嵌套级别,但是当作为键的字段开始出现相同的值时,它
..
给定一个 Map,其中的值是 String 或另一个 Map,如何有人会使用 Java 8 将地图展平为单个值列表吗? 例子: Map - “key1" ->“价值1"-“key2"->“价值2"-“key3"->地图-“key3.1"->“价值3.1"-“key3.2"->“价值3.2"-“key3.3"->地图-“key3.3.1"->“价值3.3.1"-“key3.3.2"->“价值
..
..
我想将两个 Map 与 JAVA 8 Stream 合并: 地图>mapGlobal = new HashMap>();映射>mapAdded = new HashMap>(); 我尝试使用这个实现: mapGlobal = Stream.of(mapGlobal, mapAdded).flatMap(m -> m.entrySet().str
..
我有一个列表 fooList 类 Foo {私有字符串类别;私人 int 金额;私人国际价格;...构造函数,吸气剂和二传手} 我想按类别分组,然后将金额和价格相加. 结果将存储在地图中: 地图>map = new HashMap(); 关键是 Foo 持有汇总的金额和价格,并带有一个列表作为所有具有相同类别的对象的值. 到目前为止,我已经尝试
..
..
我正在阅读 Java 8,特别是“Streams API".我想知道流是如何变得懒惰的? 我相信流只是作为库添加的,并且没有对语言进行任何更改以支持惰性.另外,如果有人告诉我这是通过反思实现的,我会感到震惊. 解决方案 为什么需要反射来获得懒惰?例如,考虑这个类: 类 LazySeq{私人最终名单列表;私有谓词输入){this.list = new ArrayList
..
我有一个 Java 类 Parent 有 20 个属性 (attrib1, attrib2 .. attrib20) 及其对应的 getter 和 setter.我还有两个 Parent 对象列表:list1 和 list2. 现在我想合并两个列表并避免基于 attrib1 和 attrib2 的重复对象. 使用 Java 8: 列表结果 = Stream.concat(li
..
我想知道什么时候可以有效地使用 IntStream.range.我不确定 IntStream.range 有多大用处的三个原因. (请将开始和结束视为整数.) 如果我想要一个数组,[start, start+1, ..., end-2, end-1],下面的代码要快得多. int[] arr = new int[end - start];整数索引 = 0;for(int i = st
..
在 Java 中,可以使用 Stream.generate(supplier) 轻松生成无限流.但是,我需要生成一个最终会完成的流. 例如,想象一下,我想要一个目录中所有文件的流.文件的数量可能很大,因此我无法预先收集所有数据并从中创建一个流(通过 collection.stream()).我需要逐个生成序列.但是流显然会在某个时候结束,并且像 (collect() 或 findAny())
..