Java拆分字符串提取唯一元素生成列表 含Java8 Stream实现方案
实现方案
Java 8 完全可以通过Stream流实现该需求,代码简洁连贯,不需要手动写遍历逻辑。
核心实现代码
原始集合定义
List<String> words = new ArrayList<>(); words.add("hello, hi, henry"); words.add("hello1, hi1, henry1"); words.add("hello, hi, henry");
Stream流处理代码
import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; // 处理逻辑 List<String> uniqueResult = words.stream() .map(item -> item.split(",")) // 按逗号拆分每个字符串为数组 .flatMap(Arrays::stream) // 将所有数组合并为一个字符串流 .map(String::trim) // 去除拆分后字符串的前后空格 .distinct() // 自动去重 .collect(Collectors.toList());
逻辑说明
flatMap用来把拆分后产生的多个字符串数组合并为单一的流,避免产生嵌套的集合结构- 增加
trim处理是因为原字符串逗号后存在空格,拆分后需要去除多余空格才能匹配预期输出 distinct方法基于字符串的equals方法判断重复,刚好满足唯一元素的需求- 最终输出的
uniqueResult内容完全符合预期:hello、hi、henry、hello1、hi1、henry1
内容的提问来源于stack exchange,提问作者user3376592
相关产品推荐
相关产品推荐

