前提・実現したいこと
データベースから取得したデータがあります。
それをJavaのプログラミングによって(SQLのGroup byではなく)、
グループ化したい。
自分でプログラムを組んだのですがnullpointerexceptionが発生したので解決したいです。
今自分が組んでいるプログラムは以下の通りです。
①SQL1列ぶんのデータをArrayListに格納(ややこしくなるのでここでの掲載では自分でListを用意しています)
②そのArrayListをmapに格納
③0個目の項目(aやbなど)が一致するものを新しいmapに格納
発生している問題・エラーメッセージ
Exception in thread "main" java.lang.NullPointerException at day0715.Main.main(Main.java:29)
該当のソースコード
Java
1package day0715; 2 3import java.util.ArrayList; 4import java.util.Arrays; 5import java.util.HashMap; 6import java.util.List; 7import java.util.Map; 8 9public class Main { 10 public static void main(String[] args) { 11 List<String> list1 = Arrays.asList("a", "100"); 12 List<String> list2 = Arrays.asList("a", "200"); 13 List<String> list3 = Arrays.asList("b", "100"); 14 List<String> list4 = Arrays.asList("c", "200"); 15 16 Map<Integer, List<String>> oldMap = new HashMap<>(); 17 Map<Integer, List<String>> newMap = new HashMap<>(); 18 19 oldMap.put(1, list1); 20 oldMap.put(2, list2); 21 oldMap.put(3, list3); 22 oldMap.put(4, list4); 23 24 int count = 1; 25 int sum = Integer.parseInt(oldMap.get(1).get(1)); 26 27 for (int i : oldMap.keySet()) { 28 List<String> list = new ArrayList<>(); 29 if (oldMap.get(i).get(0).equals(oldMap.get(i + 1).get(0))) { 30 sum += Integer.parseInt(oldMap.get(i + 1).get(1)); 31 32 } else { 33 list = Arrays.asList(String.valueOf(i), String.valueOf(sum)); 34 newMap.put(count, list); 35 count++; 36 sum = Integer.parseInt(oldMap.get(i + 1).get(1)); 37 } 38 } 39 40 } 41} 42
試したこと
デバッグをしたところ、i、oldMapはともに値が格納されていました。
回答2件
あなたの回答
tips
プレビュー