2013-02-24 2 views
0

Я хочу создать массивList следующим образом.Создать многомерный массив ArrayList в java

id->1512 associated with the values -> 12,45,78 
id->1578 associated with the values -> 456,78,87,96 

Что мне нужно делать? Должен ли я создать 2-d arrayList или я могу сделать это с помощью одноразмерного arraylist?

+1

Вам нужно 'MultiMap ' (например, от Guava) или 'Map >' – jlordo

ответ

5

Вы ищете что-то вроде этого:

Map<Integer, List<Integer>> 
+1

Я бы предпочел ['MultiMap '] (http://guava-libraries.googlecode.com/svn/tags/release03/javadoc/com/google/common/collect/Multimap.html) – jlordo

+0

Я предпочитаю не использовать сторонние библиотеки – Aubin

+0

@Aubin: Почему бы и нет? «MultiMap» приведет к гораздо более приятному коду, так как вам не нужно «пустым» проверять каждый ключ. – jlordo

2

Используйте Guava Library, и вы можете сделать это для ваших ассоциаций:

Multimap<Integer, Integer> map = HashMultimap.create(); 
map.putAll(1512, Arrays.asList(12, 45, 78)); 
map.putAll(1578, Arrays.asList(456, 78, 87, 96)); 

Вот пример того, как можно получить значение:

int key = 1512; 
for (Integer value : map.get(key)) { 
    System.out.println("Associated " + key + " -> " + value); 
} 

Вот ссылка на гуавы-х JavaDoc

+0

Вам нужно медитировать http: // ru.wikipedia.org/wiki/Occam%27s_razor – Aubin

+0

@Aubin: Извините, я не понимаю, что ваш комментарий означает в отношении моего ответа. – jlordo

+0

Бритва Оккама говорит, что вам нужно адаптировать средства к цели. Для этой простой проблемы Гува слишком большой. Зависимости уменьшают возможность повторного использования решения. – Aubin

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