Java8、streamで値を抽出し、カウントと合計値の算出について、小ネタです。
一番多いのがList<Map>タイプの値の検出です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
List<Map<String, String>> ls = new ArrayList<>(); Map<String, String> map1 = new HashMap<>(); map1.put("id", "1"); map1.put("status", "ryoukou"); map1.put("point", "5"); ls.add(map1); Map<String, String> map2 = new HashMap<>(); map2.put("id", "2"); map2.put("status", "ryoukou"); map2.put("point", "15"); ls.add(map2); Map<String, String> map3 = new HashMap<>(); map3.put("id", "3"); map3.put("status", "warui"); map3.put("point", "11"); ls.add(map3); //カウント long num = ls.stream().filter(value-> value.get("status").equals("ryoukou")).count(); //合計値 int sum = ls.stream() .filter(value-> value.get("status").equals("ryoukou")) .mapToInt(value-> Integer.parseInt(value.get("point"))) .sum(); System.out.printf(" num:%s \n",num); //2 System.out.printf(" sum:%s \n",sum); //20 |