我正在尝试对名为的 ArrayList 执行以下流操作parts:parts .stream() .map(t -> t.toLowerCase()) .distinct() .sorted() .collect(Collectors.toList());其中parts包含这样的字符串:AdventuresinDisneylandTwoblondesweregoingtoDisneyland....除了查看调试器外,parts根本没有改变。不确定我是否遗漏了该过程的某些步骤?
4 回答
慕容708150
TA贡献1831条经验 获得超4个赞
在查看调试器时,“部件”根本没有改变
正确的。流不会修改用于创建流的集合的元素。该流最终返回一个包含映射项的新项。 List只需创建一个变量并将流操作的返回值分配给它:
List<String> modifiedList = parts.stream() .map(t -> t.toLowerCase()) .distinct() .sorted() .collect(Collectors.toList());
HUX布斯
TA贡献1876条经验 获得超6个赞
您没有将收集的列表存储在任何地方。流不会就地更改集合。
你应该做:
parts = parts.stream().....;
根据评论编辑:
要获得一个ArrayList而不是 any List,请将您的收集器更改为:
.collect(Collectors.toCollection(ArrayList::new));
喵喵时光机
TA贡献1846条经验 获得超7个赞
流不会改变流的来源,因此您正在观察预期的行为。
您应该捕获流处理的结果并在调试器中检查它,例如。
List<String> result = parts.stream()...
添加回答
举报
0/150
提交
取消
