比较LinkedHashMap中的两个值以避免添加相同的值

时间:2014-02-19 10:04:08

标签: java android linkedhashmap

我有JSONarray的for循环,我将值添加到LinkedHashMap。我想避免添加相同的值。我不知道该怎么做。

for (int l  = 0; l <stops_summaries2.length(); l++){

JSONObject stopObject2 = stops_summaries2.getJSONObject(l);
String stopid2 = stopObject2.getString("id");   
System.out.println("stopid2 --->" + stopid2);
String stopurl2 = stopObject2.getString("url"); 
System.out.println("stopurl2 --->" + stopurl2);
String stopname2 = stopObject2.getString("name");
System.out.println("stopname2 --->" + stopname2);

LinkedHashMap<String, Object> map = new LinkedHashMap<String, Object>();

    map.put(TAG_NAME, stopname2);
    map.put(TAG_SHORT, id);
    map.put(TAG_COLOR, stopid2);
    itemList.add(map);
}

2 个答案:

答案 0 :(得分:0)

您可以使用containsKey(key)containsValue(values)功能来检查地图是否包含某个键或值。

编辑:我现在看到你在每次迭代时创建一个新的地图,这真的是你想要做的吗?该映射不会在for循环之外可用。我认为您需要在for循环之前声明Map,然后添加到它。

编辑:纠正了我的回答中的错误,

答案 1 :(得分:0)

在我看来,你应该避免在每次迭代时创建一个不同的地图,并将其用作数据的容器。你可以有一个包装类:

public class Item {

   String name;
   String id;
   String url;

   public Item(String nane, String id, String url) {
     this.name = name;
     this.id = id;
     this.url = url;
   }

   @Override
   public boolean equals(Object other){
     if (!(other instanceof Item)) return false;
      return id.equals( ((Item)other).id);
   }

}

并覆盖等于检查两个对象是否等于。