带有Hashmaps的ArrayList的ArrayList.contains

时间:2014-02-08 18:02:21

标签: java arraylist hashmap

我有ArrayList个哈希映射 - &gt; ArrayList<HashMap<String, String>>

如何轻松检查hashmap是否包含特定值?我不想手动遍历整个列表。我正在寻找适用于此案例的ArrayList.contains()的替代方案。

例如:假设我将以下值放入Hashmap

map.put(TAG_ID, id);
map.put(TAG_TITLE, title);
map.put(TAG_DESCRIPTON, description);

然后添加继续添加到我的ArrayList - arrayList.add(map)事实是,我不想将重复的id添加到arraylist。

3 个答案:

答案 0 :(得分:1)

你应该重新考虑你的设计。使用对象而不是Map来表示您要存储的内容。然后使用Map跟踪所述对象的集合。这将自动处理您提到的重复案例,并且可以防止您必须存储多个Map并迭代它们。

public class Item {
  String id;
  String title;
  String description;
}

HashMap<String, Item> map = new HashMap<String, Item>();
map.put(item.id, item);

答案 1 :(得分:0)

1)根据您的第1条评论,您应该考虑使用
HashMap<String, HashMap<String, String>>

对于外部HashMap的键,使用内部HashMaps的ID值 对于内部HashMaps,只需继续做你已经做过的事情。

2)根据您的第2条评论,您可以考虑扩展ArraList和
overrding包含,但这听起来像是矫枉过正和错误的方式 一般来说。 ArrayList.contains()仍在迭代和检查,
我不明白为什么你不想在你的情况下进行迭代。

答案 2 :(得分:-1)

你可以使用这个假设你有一个名为list的arraylist包含三个hashmaps

 for(HashMap<String ,String> h : list)
     {
         String name =h.get("name");
         String age= h.get("age");
         String address =h.get("address");

         //some code here for the var :)
     }