使用java Streams转换嵌套List
发布时间:2020-12-15 08:28:36 所属栏目:Java 来源:网络整理
导读:是否有可能使用Streams获得相同的结果(正如我目前使用以下嵌套的for循环获得)? ListString people = Arrays.asList("John","Adam");ListString dogs = Arrays.asList("alex","rex");ListListString list = new ArrayListListString();list.add(people);list
是否有可能使用Streams获得相同的结果(正如我目前使用以下嵌套的for循环获得)?
List<String> people = Arrays.asList("John","Adam"); List<String> dogs = Arrays.asList("alex","rex"); List<List<String>> list = new ArrayList<List<String>>(); list.add(people); list.add(dogs); List<List<String>> list2 = new ArrayList<List<String>>(); for (int i = 0; i < list.size(); i++) { list2.add(new ArrayList<>()); for (int j = 0; j < list.get(i).size(); j++) { list2.get(i).add(list.get(i).get(j).toUpperCase()); } } System.out.println(list2); 我想得到这样的回应: [[JOHN,ADAM],[ALEX,REX]] 使用以下流: list.stream().flatMap(l – > l.stream()).map(String :: toUpperCase).collect(Collectors.toList()); 我只能得到这样的东西: [JOHN,ADAM,ALEX,REX] 解决方法
flatMap对你没有帮助,因为你不想要平坦的输出.您应该将每个内部列表分别转换为大写列表,然后将所有这些列表收集到最终的嵌套输出列表中.
List<List<String>> list2 = list.stream() .map(l -> l.stream().map(String::toUpperCase).collect(Collectors.toList())) .collect(Collectors.toList()); 输出: [[JOHN,REX]] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |