我有:
TAG | REVIEW
A | hello
B | yay
A | win
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实例合并为一个总和。不知道怎么做。
答案 0 :(得分:1)
java中没有List<V, T>
这样的东西。另外,您不能使用Map
作为数据,因为请插入:
TAG | REVIEW
A | hello
B | yay
A | win
在地图中,A | hello
将替换为A | win
(它们具有相同的密钥)。
解决方案是创建一个包含TAG
和REVIEW
信息的类:
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())));