为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

qq_笑_17 2021-08-25 10:03:37
是的,一个微不足道的问题,但我没有找到重复的问题。目前,从这个集合(ArrayList):JavaC#JavaPython我必须得到这个:(也就是说,在每个单词上都会遇到重复的次数)Java 2C# 1Java 2Python 1目前我正在使用 Map,但它删除了重复项,这就是我得到的。Java 2C# 1Python 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 2C# 1Java 2Python 1Java 1Java 1在使用 List 的实现中,我遇到了一个问题,它将当前元素增加 1,但同时也创建了另一个元素。伙计们,我会对任何可以指导我解决问题的想法或线索感到满意!UPD:这个问题的所有答案都是神圣的。谢谢你们!试图在不冒犯他人的情况下选择正确的答案,我感到很尴尬。
查看完整描述

3 回答

?
慕丝7291255

TA贡献1859条经验 获得超6个赞

您可以Collections.frequency在迭代列表时使用来打印列表中每个单词的出现次数:


public static void main(String[] args) {

    List<String> list = Arrays.asList("Java", "C#", "Java", "Python");

    list.forEach( s -> System.out.println(s + " " + Collections.frequency(list, s)));

}

输出:


Java 2

C# 1

Java 2

Python 1


查看完整回答
反对 回复 2021-08-25
?
Cats萌萌

TA贡献1805条经验 获得超9个赞

public static void main(String[] args) {


    List<String> list = Arrays.asList("Java", "C#", "Java", "Python");


    list.forEach( s -> System.out.println(s + " " + list.stream().filter( s::equals ).count()));


}


查看完整回答
反对 回复 2021-08-25
?
SMILET

TA贡献1796条经验 获得超4个赞

我会这样做。首先,您收集Map<String, Long>列表中每个项目的出现次数。之后,您只需遍历原始列表,从您获得的地图中打印该项目及其计数。


下面是一个例子:


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

list.add("Java");

list.add("CORE");

list.add("Java");

list.add("Java");



Map<String, Long> stringLongMap = list.stream() // collectors (java 8)

        .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));




for(String item: list) { // I just printed the result, you can do whatever you want

    System.out.println(item + " " + stringLongMap.get(item));

}


查看完整回答
反对 回复 2021-08-25
  • 3 回答
  • 0 关注
  • 203 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信