2017-05-04 22 views
1
import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.HashMap; 
import java.util.List; 
import javax.swing.JOptionPane; 


public class HashMapDemo { 
public static double runProcess; 
public static int ID = 0; 
public static void processHashMap() { 
    HashMap < Integer, ArrayList <String>> students = new HashMap < >(); 
    List <String> arr = new ArrayList < > (100); 
    int x = 0; 
    while (ID != -1) { 
    String uData = JOptionPane.showInputDialog("Please enter your Student ID and Course Number (Seperated by a space) or enter -1 to view list: "); 
    String[] splitter = uData.split(" "); 
    ID = Integer.parseInt(splitter[0]); 
    arr.add(0, splitter[1]); 
    students.put(ID, (ArrayList <String>) arr); 
    x++; 
    } 
    System.out.println(Arrays.asList(students)); 

} 
public static void main(String[] args) { 
    processHashMap(); 
} 

} 

出力は[{-1 = [Test3は、Test2を、Test1を、試験]、10 = [Test3は、Test2を、Test1を、試験]、11 = [Test3は、Test2を、Test1を、試験] }]JavaのハッシュマップのArrayList

誰かがID「10 Test」「10 Test2」「100 Test3」10を入力すると、10 = [Test2、Test]となるように、各IDにそれを指定しようとしています。 100 = [Test3は]

(コメントに従ってください)、以下のようにあなたが HashMapから ID、その後 addそれに新しい要素を持つ既存の ArrayListを取得する必要があります
+2

ループ内の各生徒に新しいArrayListを作成します。あなたは同じarraylistに再利用して追加しているようです。 – yogidilip

+0

これはかなりあなたのための解決策です –

答えて

2

String[] splitter = uData.split(" "); 
ID = Integer.parseInt(splitter[0]); 
ArrayList<String> studentsList = students.get(ID);//get the existing list from Map 
if(studentsList == null) {//if no list for the ID, then create one 
    studentsList= new ArrayList<>(); 
} 
studentsList.add(0, splitter[1]);//add to list 
students.put(ID, studentsList);//put the list inside map 
+0

ありがとう、これは働いた。 –

関連する問題