我想知道无论如何,如果我知道ArryList的一部分,我可以找到另一部分。我遇到的问题是我对java的了解有限。
我将列表设置为:
spotsList = new ArrayList<HashMap<String, String>>();
活动通过并将每个地点(从服务器)添加到具有PID和NAME的forloop中的列表:
HashMap<String, String> map = new HashMap<String, String>();
map.put(TAG_PID, id);
map.put(TAG_NAME, name);
spotsList.add(map);
如果我知道PID,现在有办法得到这个名字吗?
提前谢谢你,
泰勒
答案 0 :(得分:3)
您似乎期望PID是唯一的(给定PID可以找到相应的名称)。因此,您应该只使用一张地图而不是地图列表:
Map<String, String> map = new HashMap<String, String>();
for (Spot s : spots) map.put(s.id, s.name);
从pid中检索名称只是一个问题:
String name = map.get(pid);
答案 1 :(得分:1)
您应该使用域类而不是HashMap
来保存该数据。如果您这样做,您可以轻松地搜索集合中的特定值。
public class Spot {
private final String pid;
private final String name;
public Spot(String pid, String name) {
this.pid = pid;
this.name = name;
}
// getters
}
您还需要添加覆盖equals()
和hashCode()
。
然后使用地图而不是列表:
Map<String,Spot> spots = new HashMap<String,Spot>();
spots.put(pid, new Spot(pid, name));
然后找一个:
Spot spot = spots.get(pid);