如何将一列计数添加到ArrayList

时间:2017-10-16 22:11:53

标签: java arraylist

我有:

TAG | REVIEW
A   | hello
B   | yay
A   | win
在ArrayList中,我试图得到:

TAG | COUNT  
A   | 8       //hello+win =8
B   | 3       //yay =3

其中count是具有相同标记的所有字符串中的字符总数。我一直在阅读有关收藏和地图的内容,但我完全迷失了。有人可以解释如何解决这个问题吗?

1)得到计数:

List<String,Integer> poll_reviewText_count=new ArrayList<>();
for(String l:poll_reviewText){
    poll_reviewText_count.add({l[0],l[1].length()}) //TAG, COUNT
} 

2)然后我认为我需要将匹配的所有TAG实例合并为一个总和。不知道怎么做。

1 个答案:

答案 0 :(得分:1)

java中没有List<V, T>这样的东西。另外,您不能使用Map作为数据,因为请插入:

TAG | REVIEW
A   | hello
B   | yay
A   | win

在地图中,A | hello将替换为A | win(它们具有相同的密钥)。

解决方案是创建一个包含TAGREVIEW信息的类:

class Bar {
    String tag;
    String review;
    // setters - getters
}

然后使用java stream,您可以collect获得您想要的数据:

Map<String, Integer> collect = poll_reviewText_count.stream()
            .collect(Collectors.groupingBy(Bar::getTag, Collectors.summingInt(o -> o.getReview().length())));