我有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);
}
答案 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);
}
}
并覆盖等于检查两个对象是否等于。