2013-03-06 2 views
-3

Я создал следующий список, но при первом определении я использую хэш-карту (для первой строки), но теперь я не хочу, чтобы это было уникальными, как должен я определить его?Создать глубокий список с не уникальным ключом

HashMap<String, LinkedHashMap<String, String>> entityList = new HashMap<String, LinkedHashMap<String, String>>(); 

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

Мне нужно построить его, как следующая структура.

emp<name,test> 
    <lastname,lastname> 
    <salery,1000> 
emp<firstname,dan> 
    <age,20> 
adress<post,111> 
     <street,hhh> 
+2

не может ничего понять! (O_o) – SudoRahul

+2

Em .... Wat? O_O – user

+0

Я редактировал свой пост, извините ... \ –

ответ

0

Использование hashmap требует, чтобы ключи были уникальными, в противном случае - как вы можете получить правильное значение ???

Что вы можете сделать, это связать несколько значений одного ключа, используя HashMap<String, List<valueType>>

Вы можете использовать:

HashMap<String, List<yourObject>> 

Таким образом, каждый ключ имеет несколько объектов, связанных с.

В вашем случае:

HashMap<String, List<LinkedHashMap<String, String>>> 

Если вам нужна коллекция с несколькими объектами, вы можете использовать List<yourObject> и yourObject будет так же, как вы хотите (провести String и LinkedHashMap<String, String> в вашем примере).

Я хотел бы использовать первый выбор, но если вы действительно не хочу этого - использовать List<yourObject>

+0

У меня есть редактирование моего сообщения, поэтому ваше решение недействительно ... –

+0

Я думаю, что это действительно так. Здесь вы можете хранить несколько значений для ключа =>, а не уникально. – BobTheBuilder

+0

Его все еще довольно неясно. Какие дублирующие записи вы хотите добавить? и каков ваш «главный список» в «Я могу войти в основной список дубликатов записей»? – BobTheBuilder

0

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

HashMap <String, Object> entityList = new HashMap<String, Object>();
LinkedHashMap<String, String> linkedHashmap = new LinkedHashMap<String, String>();
entityList.put("key1", updateObject(entityList.get("key1", newkey, new value);

public LinkedHashMap< String, String> updateObject(LinkedHashMap<String, String> linkedHashmap,String newKey,String newValue){
linkedHashmap.put(newKey,newValue);
return linkedHashmap;
}

+0

Я не вижу, как вы можете рекомендовать конкретную реализацию, не подвергая сомнению мотивы оригинального плаката. Почему он выбрал HashMap? Как ему нужно иметь дело с потенциально многими связанными значениями? На эти вопросы необходимо ответить, прежде чем можно будет рекомендовать адекватную реализацию. –

+0

Спасибо @ClassStacker за помощь (как порекомендовать ответ). Поскольку первоначальный плакат начал внедрять HashMap, и для того же ключевого пользователя хотят хранить разные типы данных, я предлагаю HashMap с объектом как значение. – Yup

0

В качестве альтернативы, вы можете взглянуть на Guava MultiMap

public interface Multimap<K,V>

Коллекция похожа на карту, но которая может связать несколько значений с одним ключом. Если вы дважды вызываете put(K, V) с одним и тем же ключом, но разных значений, то мультимап содержит сопоставления от ключа к значениям .

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