我想循环列表中的每个元素。在每个元素中,我们仍然有相应的操作,我想实现这些操作,然后将其存储在列表中。
List<String> Str = words.stream().forEach(x->x.getSentenceStr().toLowerCase()).collect(Collectors.toList());
尝试使用我的方法时收到错误消息:
无法在原始类型void上调用collect。
我认为forEach用于循环列表中的每个元素,如果我在每个元素中执行某些操作,那么它会在仍循环的情况下返回输出?最后,collect将收集所有这些输出并将其转换为字符串列表。我对这个forEach函数有错误的理解吗?
这是我的假审判:
List<String> s = new ArrayList<String>(Arrays.asList("a","b", "c"));
List<String> ss = s.stream().forEach(x->x.toLowerCase()).collect(Collectors.toList());
System.out.print(s);
答案 0 :(得分:4)
forEach
是void
,您需要像
这样的 map
List<String> ss = s.stream().map(x -> x.toLowerCase()).collect(Collectors.toList());
,您可以使用String.toLowerCase()
的较短功能调用,例如
List<String> ss = s.stream().map(String::toLowerCase).collect(Collectors.toList());