2013-04-15 3 views
2

У меня есть следующий список:Быстрое объединение нескольких ArrayLists в один

List<ArrayList> list; 

list.get(i) содержит объект ArrayList со следующими значениями {p_name=set1, number=777002}.

Я должен создать

Map<key,value> 

где ключ содержит p_name и значения числа.

Как сделать это легко и быстро, так как в начальном списке могут быть сотни записей, и каждый номер может присутствовать в нескольких записях p_name.

Update: Вот мое текущее решение

List<Row> list; //here is my data 

    Map<String,String> map = new TreeMap<String,String>(); 

    for (Row l : list) { 
     if (l.hasValues()) { 
      Map<String, String> values = l.getResult(); // internal method of Row interface that returns a map 
      String key = values.get("number"); 
      map.put(key, values.get("p_name")); 
     } 
    } 

метод работает, но, возможно, это можно было бы сделать лучше?

PS: В моем дизайне есть явная ошибка. Интересно, находите ли вы это :)

+0

прямо сейчас Я рассматриваю возможные решения. Самый простой способ - создать список вручную, но, возможно, существует более оптимальный способ. – luksmir

+0

Я бы сначала попытался создать это решение и посмотреть, работает ли он достаточно быстро. Если это не так, покажите свою попытку и попросите улучшения. – mthmulders

+0

Вот моя попытка. – luksmir

ответ

1

Синус ключ может иметь более одного значения, то, что вы ищете, это MultiMap. Multimap Или простая карта в виде

Map<Key,ArrayList<Values>> 

Там нет «быстрого» пути ко мне. Вам все равно нужно перебирать все элементы и проверять все значения.

И на самом деле сотни к Java совсем не так

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