在arraylists中搜索[JAVA]

时间:2018-05-16 18:57:41

标签: java

我有两个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

知道怎么做吗?

3 个答案:

答案 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);