Java 如何将列表中的重复元素放置到数组中?
我需要在集合中找到重复的项,并将它们放入数组中 我写了这个方法:Java 如何将列表中的重复元素放置到数组中?,java,java-8,java-stream,Java,Java 8,Java Stream,我需要在集合中找到重复的项,并将它们放入数组中 我写了这个方法: 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).equ
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);
}
}
我错过了什么?我不想放弃它,因为它看起来像是你在学习。提示:您可以(也许应该,为了练习)通过一个循环完成此任务。不需要使用嵌套循环。请记住,通过使用duplicates.size()-1可以缩短循环。我不想放弃它,因为它看起来像是在学习。提示:您可以(也许应该,为了练习)通过一个循环完成此任务。不需要使用嵌套循环。请记住,可以使用duplicates.size()-1缩短循环。有几件事,内部循环只需要向前看,这样
j
就可以从i+1
开始,因此外部循环在i
结束。当分配给质量时,您不能使用I或j,为此您需要一个单独的计数器
int k = 0;
for (int i = 0; i < duplicates.size() -1; i++){
for (int j = i + 1; j < duplicates.size(); j++){
if (duplicates.get(i).equalsIgnoreCase(duplicates.get(j))){
mass[k] = duplicates.get(i);
k++;
}
}
}
intk=0;
对于(int i=0;i
一些事情,内部循环只需要向前看,这样j
就可以从i+1
开始,因此外部循环在i
结束。当分配给质量时,您不能使用I或j,为此您需要一个单独的计数器
int k = 0;
for (int i = 0; i < duplicates.size() -1; i++){
for (int j = i + 1; j < duplicates.size(); j++){
if (duplicates.get(i).equalsIgnoreCase(duplicates.get(j))){
mass[k] = duplicates.get(i);
k++;
}
}
}
intk=0;
对于(int i=0;i
如果您想使用java-8流来实现这一点
首先将列表
流到映射
,键为字符串
,值为长
出现计数
如果您喜欢使用java-8流来实现这一点
首先将列表
流到映射
,键为字符串
,值为长
出现计数
words
列表包含什么?它的副本列表如果列表中的字符串多次出现,则您希望将其收集到array@Mefisto_Fell?单词列表包含什么?重复列表如果列表中的字符串出现多次,则您希望将其收集到array@Mefisto_Fell那太好了,但是如何收集到列表?但是为什么需要列表
?基于什么@Mefisto\u选择哪一个列表
或数组
@Mefisto是第一个有列表的,这很好,但是如何收集到列表呢?但是为什么你需要列表?基于什么@Mefisto\u选择哪一个列表
或数组
@Mefisto_是第一个有名单的人
int k = 0;
for (int i = 0; i < duplicates.size() -1; i++){
for (int j = i + 1; j < duplicates.size(); j++){
if (duplicates.get(i).equalsIgnoreCase(duplicates.get(j))){
mass[k] = duplicates.get(i);
k++;
}
}
}
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}
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]