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);
## 结果输出
-- [张三] --
posted @ 2022-08-03 16:43  [奋斗]  阅读(1960)  评论(0编辑  收藏  举报