Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将列表中的重复元素放置到数组中?_Java_Java 8_Java Stream - Fatal编程技术网

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]