List集合中获取重复元素
一、方法1
## 测试数据 List<String> words = Arrays.asList("a", "b", "c", "d", "a", "d"); ## 具体方法 List<String> results = HashMultiset.create(words).entrySet().stream() .filter(w -> w.getCount() > 1) .map(Multiset.Entry::getElement) .collect(Collectors.toList()); System.out.println(results); ## 结果输出 -- [a, d] --
二、方法2
/** * list集合中获取重复元素 * @param list * @param <E> * @return */ public static <E> List<E> getListDuplicateElements(List<E> list){ List<E> words = list; Set<E> repeated = new HashSet<>(); List<E> results = new ArrayList<>(); for (E word : words) { if (!repeated.add(word)) { results.add(word); } } return results; }
方法测试:
## 测试数据 List<String> str = new ArrayList<>(); str.add("张三"); str.add("张三"); str.add("李四"); str.add("王五");
## 方法调用 List<String> listDuplicateElements = getListDuplicateElements(str); System.out.println(listDuplicateElements);
## 结果输出 -- [张三] --
古今成大事者,不唯有超世之才,必有坚韧不拔之志!