如何查找重复行并在它们前面显示重复次数

是的,一个微不足道的问题,但我没有找到重复的问题。目前,从这个集合(ArrayList):


Java

C#

Java

Python

我必须得到这个:(也就是说,在每个单词上都会遇到重复的次数)


Java 2

C# 1

Java 2

Python 1

目前我正在使用 Map,但它删除了重复项,这就是我得到的。


Java 2

C# 1

Python 1

这是我的代码:


      Map<String, Integer> map = new HashMap<>();

        for (String temp : array) {

            Integer count = map.get(temp);

            if (count != null){

                map.put(temp, count + 1);

            }

            else {

                map.put(temp, 1);

            }

        }

我有一个想法将数据写入另一个列表,通过这个列表将“父”列表的每个元素与新列表的所有元素进行比较。类似的东西:


List<String> resultList = new ArrayList<>();

List<String> mainList = new ArrayList<>();


    for (int i = 0; i < arrayList.size(); i++) {

        mainList.add(i,arrayList.get(i));

    }


    for (int i = 0; i < mainList.size(); i++) {

            int x = 1;

        for (String anArray : arrayList) {

            if (mainList.get(i).equals(anArray)) {

                resultList.add(i,mainList.get(i) + " "+ x++);

            }

        }

    }

    resultList.forEach(System.out::println);

它可以根据我的需要工作,但在遇到重复项时还会创建一个额外的行。


Java 2

C# 1

Java 2

Python 1

Java 1

Java 1

在使用 List 的实现中,我遇到了一个问题,它将当前元素增加 1,但同时也创建了另一个元素。


伙计们,我会对任何可以指导我解决问题的想法或线索感到满意!


UPD:这个问题的所有答案都是神圣的。谢谢你们!试图在不冒犯他人的情况下选择正确的答案,我感到很尴尬。


qq_笑_17
浏览 204回答 3
3回答

慕丝7291255

您可以Collections.frequency在迭代列表时使用来打印列表中每个单词的出现次数:public static void main(String[] args) {&nbsp; &nbsp; List<String> list = Arrays.asList("Java", "C#", "Java", "Python");&nbsp; &nbsp; list.forEach( s -> System.out.println(s + " " + Collections.frequency(list, s)));}输出:Java 2C# 1Java 2Python 1

Cats萌萌

public static void main(String[] args) {&nbsp; &nbsp; List<String> list = Arrays.asList("Java", "C#", "Java", "Python");&nbsp; &nbsp; list.forEach( s -> System.out.println(s + " " + list.stream().filter( s::equals ).count()));}

SMILET

我会这样做。首先,您收集Map<String, Long>列表中每个项目的出现次数。之后,您只需遍历原始列表,从您获得的地图中打印该项目及其计数。下面是一个例子:List<String> list&nbsp; = new ArrayList<>();list.add("Java");list.add("CORE");list.add("Java");list.add("Java");Map<String, Long> stringLongMap = list.stream() // collectors (java 8)&nbsp; &nbsp; &nbsp; &nbsp; .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));for(String item: list) { // I just printed the result, you can do whatever you want&nbsp; &nbsp; System.out.println(item + " " + stringLongMap.get(item));}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java