2013-05-10 3 views
-1
private static Map<String, ArrayList<String>> loadValues = new HashMap<String,ArrayList<String>>(); 
static ArrayList details = new ArrayList<String>(); 

Ввод 2 набора значений ... say .. key: 1 значения: abc, [email protected], 555 и ключ: 2 значения: xyz, x @ z .com, 765ArrrayList внутри Hashmap при извлечении значений ключа

Я пробовал это.

System.out.println("Enter the User ID:"); 
     userID = in.next(); 
     System.out.println("Enter your name:"); 
     name = in.next(); 
     details.add(name); 
     System.out.println("Enter your e-mail:"); 
     email = in.next(); 
     details.add(email); 
     System.out.println("Enter your contact number:"); 
     contactNo = in.next(); 
     details.add(contactNo); 
     loadValues.put(userID, details); 

и используемый итератор для печати ... Когда я пытаюсь напечатать, он печатает как ...

1: abc, [email protected], 555 ,xyz,[email protected],765 
2: abc, [email protected], 555 ,xyz,[email protected],765 

Но, мне нужно напечатать, 1: abc, [email protected], 555 and 2: xyz,[email protected],765 , что я должен делать?

+0

Не могли бы вы предоставить код, который вы используете для печати значений? – Smallhacker

ответ

1

Это потому, что вы не создаете новый список для двух записей. Поскольку детали статичны, обе записи в вашей карте указывают на тот же список.

static List a = new ArrayList(); 
a.add(foo); 
map.put(1, a); 
a.add(bar); 
map.put(2, a); 
map.get(1) == map.get(2) 
>> true 

Вам нужно сделать что-то вроде:

List a = fillList(); 
List b = fillList(); 
map.put(1, a); 
map.put(2, b); 

Где FillList представляет создание нового экземпляра списка и заполнить его.

+0

loadMap {System.out.println ("Введите идентификатор пользователя:"); userID = in.next(); System.out.println («Введите свое имя:»); name = in.next(); details.add (имя); System.out.println («Введите свой адрес электронной почты:»); email = in.next(); details.add (электронная почта); loadValues.put (userID, подробности); } display {Map.Entry mEntry = (Map.Entry) iterator.next(); System.out.println (mEntry.getKey() + ":" + mEntry.getValue());} – user2369645

+0

Danstahr: Да ... Можете ли вы немного рассказать об этом? Но я даю значения набора результатов динамически. В случае, если я создаю экземпляры для списка это может увеличиться по мере увеличения моих строк записей? – user2369645

Смежные вопросы