从ArrayList中选择某些数据

时间:2014-01-28 22:48:12

标签: java android arraylist

我想知道无论如何,如果我知道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,现在有办法得到这个名字吗?

提前谢谢你,

泰勒

2 个答案:

答案 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);