在Java面试题中面试官常常会问这样一道题:如何去掉List集合中重复的元素?
通常我们知道list集合里面是无序的,并可以出现重复元素,set集合是不可以出现重复元素。解决上面的问题,我给出两种解决方案
方案一:使用set集合
方案二:通过jdk8提供的stream流的方式去重
见代码:
public class TestStream { public static void main(String[] args) { // 问题:如何去掉List集合中重复的元素 List<String> words = Arrays.asList("a","b","c","c","d","e","e","g","f"); // 方案一:使用set集合 Set<String> set = new HashSet<>(); for (String word : words){ set.add(word); } for (String word : set){ System.out.println(word); } System.out.println("--------------------"); // 方案二:通过jdk8提供的stream流的方式去重 words.stream()//将list集合准换成stream流 .distinct()//去重 .collect(Collectors.toList())//将流转化为list集合 .forEach(System.out::println);//循环打印 } }
运行结果:
a b c d e f g -------------------- a b c d e g f
上面两种方案对比起来,方案二代码更简洁。