计算ArrayList中唯一元素的出现次数

时间:2021-04-17 13:59:00

标签: java

所以目前我有一个

static List<List<String>> lines = new ArrayList<>();

Arraylist 包含诸如

之类的值
{["ID", "Last Name", "First Name", "Vaccine Type", "Vaccination Date", "Vaccine Location"]
["12345", "Doe", "John", "Pfizer", "10/30/2020", "Argentina"]
["54321", "Adam", "Marceline", "Pfizer", "11/19/2020", "Russia"]
["70513", "Sitz", "Tomislav", "Moderna", "12/2/2020", "England"]
["54371", "Lyndon", "Sergei", "Johnson&Johnson", "03/01/2021", "Israel"]
["41027", "Chambers", "Wallis", "Moderna", "01/28/2021", "United States"]
}

我想找到独特疫苗类型的数量以及它的频率。因此,例如这个数组列表应该返回类似

"Pfizer:2, Moderna:2, J&J:1"  

理想情况下在它自己的独立数据结构(数组)中。 我尝试使用 HashList,但不支持我的数组列表的格式。

Set<String> unique = new HashList<String>(lines);
                for (String key : unique) {
                    System.out.println(key + ": " + Collections.frequency(lines, key));
                }

我收到错误“无法解析哈希列表以输入”。

2 个答案:

答案 0 :(得分:0)


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

for(list<String> l : lines) {
    String name = l.get(3);
    int count = map.getOrDefault(name,0);
    count++;
    map.put(name,count)
}

//now iterate the map and print all the values

答案 1 :(得分:0)

Map<String, Long> result = lines.stream().collect(Collectors.groupingBy(list -> list.get(3), Collectors.counting()));

产生:// {Pfizer=2, Moderna=2, Johnson&Johnson=1}

一种更简洁的方法是将每个字符串列表映射到一个相应的对象,然后通过这些对象进行流式处理,但这需要您进行重构:)

相关问题