我有两个arraylists。一个用于车牌,一个用于千米(索引匹配)。 在第一个arraylist中,有多个具有相同牌照的索引。我想制作另一个arraylist,然后只用1个牌照,然后加上公里驱动。 所以如果有的话
arraylist1;arraylist2
license 1; 500
license 1; 600
license 1; 300
license 2; 100
license 2; 100
它应该给2名arraylists说下面的
arraylist1;arraylist2
license1;1400
license2;200
知道怎么做吗?
答案 0 :(得分:1)
您似乎想将 key
(许可证)映射到value
(公里)。所以只需使用Map
。
例如:
final List<String> licenses = List.of("license 1", "license 1", "license 1", "license 2", "license 2");
final List<Integer> kilometers = List.of(500, 600, 300, 100, 100);
final Map<String, Integer> sum = IntStream.range(0, licenses.size())
.boxed()
.collect(toMap(licenses::get, kilometers::get, Integer::sum));
System.out.println(sum);
输出:
{license 1=1400, license 2=200}
使用
import static java.util.stream.Collectors.toMap;
答案 1 :(得分:0)
只需使用许可证作为密钥,然后通过搜索密钥添加公里数。
答案 2 :(得分:0)
您可以使用地图,如下所示:
Map<String, Integer> sum = new HashMap<String, Integer>();
for(int i=0; i<arraylist1.size(); i++){
if(!sum.containsKey(arraylist1.get(i))) {
sum.put(arraylist1.get(i), arraylist2.get(i));
}else{
sum.put(arraylist1.get(i), arraylist2.get(i) + sum.get(arraylist1.get(i)));
}
}
System.out.println(sum);