2015-02-03 2 views
1

я уже получил HashMap:Работа со значениями через объект HashMap

Map<String, Object> ObjectMap = new HashMap<String, Object>(); 

Я поставил значение этой карты:

this.ObjectMap.put("text",new ArrayList<Object>()); 

Теперь отображающие хранит объект (ArrayList) с помощью клавиши «текст ». И теперь я хочу поместить значение в это ArrayList. Я могу это сделать так:

@SuppressWarnings("unchecked") 
List<Object> s= (List<Object>) ObjectMap.get("text"); s.add(new Ex("n")) 

Могу ли я сделать это лучше и объединить аннотацию и параметры?

+3

Конечно, вам нужно разработать более безопасное решение, вместо использования «Map ». Например, написание фактического класса с полем с именем 'text', хранящим« Список ». Код, обозначающий «Объект», является предупреждающим знаком сам по себе. –

+1

Waht вы подразумеваете под «обходя * параметры *»? – laune

+0

Какой объект вы собираетесь хранить как значения в Map? Если это только 'List' из' Ex', вы можете использовать 'Map > map'. Это позволит вам хранить 'ArrayList ', как вы уже это сделали, но на этот раз вы сможете вызвать 'map.get (« текст »). Add (new Ex (« n »))' без необходимости делать. – Pshemo

ответ

0

Если вам необходимо прочитать файл конфигурации, который вы можете использовать значение строковой в списке:

Map<String, List<String>> map = new HashMap<>(); 
map.put("key", new ArrayList<String>()); 
List<String> list = map.get("key"); 
list.add("config"); 
0

Dont сделать значение как объект типа его не Рекомендован и вызывает путаницу.

Map < String, List <String>> ObjectMap = new HashMap < String, List <String>>(); 
this.ArrayObjectMap.put("text", new ArrayList <String>()); 
ObjectMap.get("text").add("n"); 
+0

У меня есть объект, потому что за объектом у меня может быть любой тип данных. –

0

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

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

Моя рекомендация - искать этот интерфейс, а затем объявить вашу карту как Map<String, MyInterface>.

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