gpt4 book ai didi

java - 如何将列表中的重复元素放入数组中?

转载 作者:行者123 更新时间:2023-11-29 08:24:32 29 4
gpt4 key购买 nike

我需要在集合中找到重复项并将它们放入一个数组中。

我写了这个方法:

String[] mass = new String[(int) limit];

for (int i = 0; i < duplicates.size(); i++){
for (int j = 1; j < duplicates.size(); j++){
if (i != j && duplicates.get(i).equalsIgnoreCase(duplicates.get(j))){
mass[j - 1] = duplicates.get(j);
}
}

我有这个 Collection :

List<String> duplicates = new ArrayList<>();
Collections.addAll(duplicates, "java", "JaVa", "mm", "Mama", "ss", "MaMa");

但是当我在屏幕上显示结果时,我得到了这个答案。

JaVa
MaMa
Mama

我错过了什么?

最佳答案

如果你喜欢使用 java-8 流来做到这一点

  1. 首先将 List 流式传输到 Map 中,key 为 String value 为 Long count of occurrence

 Map<String, Long> result =  duplicates.stream().map(String::toLowerCase)
.collect(Collectors.groupingBy(Function.identity(),Collectors.counting()));
System.out.println(result); //{ss=1, mm=1, java=2, mama=2}
  1. 如果出现次数大于 1 则进行过滤,并将其收集为 String 数组,下面的代码显示了两者的结合

String[] array = duplicates.stream().map(String::toLowerCase)
.collect(Collectors.groupingBy(Function.identity(),Collectors.counting()))
.entrySet().stream().filter(entry->entry.getValue()>1).map(Map.Entry::getKey).toArray(String[]::new);

System.out.println(Arrays.toString(array)); //[java, mama]

关于java - 如何将列表中的重复元素放入数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54281190/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com