[英]Comparing two Integer list using java8 filter
我有一個問題如下。 有兩個整數列表a和b具有相同的大小。 現在我想比較同一索引的兩個列表值。 我的函數返回包含2個值的列表。 第一個值是列表a中更大的值的計數。 第二個值是列表b中更大的值的計數。 如果兩者具有相同的值而不是計數的增量。
我可以了解如何使用流/過濾器/謂詞在java8中實現它
我在舊的Java版本中重新使用了該方法。
static List<Integer> compareTriplets(List<Integer> a, List<Integer> b) {
List<Integer> list = new ArrayList<Integer>();
int asize = 0;
int bsize = 0;
for (int i = 0; i <b.size();i++) {
if(a.get(i) > b.get(i)) {
asize++;
}else if(a.get(i) < b.get(i)) {
bsize++;
}
}
list.add(asize);
list.add(bsize);
return list;
}
[點撥。 輸入:a = 5 6 7 b = 3 6 10輸出:1 1例如2.輸入:a = 17 28 30 b = 99 16 8輸出:2 1
首先篩選出所有相等的值。 然后,創建用布爾鍵地圖,表示給定值是否a
比對應的值小於或大於b
。 最后使用計數收集器來獲取每個類別的計數。 這是它的外觀。
Collection<Long> gtAndLtCount = IntStream.range(0, a.size())
.filter(i -> a.get(i) != b.get(i)).boxed()
.collect(Collectors.partitioningBy(i -> a.get(i) < b.get(i), Collectors.counting()))
.values();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.