Java 从ArrayList中选择某些数据

Java 从ArrayList中选择某些数据,java,android,arraylist,Java,Android,Arraylist,我想知道,如果我知道ArryList的一部分,我是否可以找到另一部分。我遇到的问题是我对java的知识有限 我将列表设置为: spotsList = new ArrayList<HashMap<String, String>>(); spotsList=newarraylist(); 该活动将遍历并将每个点(从服务器)添加到forloop中的列表中,PID和名称如下: HashMap<String, String> map = new HashMap<

我想知道,如果我知道ArryList的一部分,我是否可以找到另一部分。我遇到的问题是我对java的知识有限

我将列表设置为:

spotsList = new ArrayList<HashMap<String, String>>();
spotsList=newarraylist();
该活动将遍历并将每个点(从服务器)添加到forloop中的列表中,PID和名称如下:

HashMap<String, String> map = new HashMap<String, String>();
                    map.put(TAG_PID, id);
                    map.put(TAG_NAME, name);
spotsList.add(map);
HashMap map=newhashmap();
地图放置(标签PID,id);
地图放置(标签名称、名称);
spotsList.add(地图);
现在,如果我知道PID,有没有办法得到这个名字

提前谢谢大家,


Tyler

似乎您希望PID是唯一的(给定PID,您可以找到相应的名称)。因此,您可能只需要使用一个地图,而不是地图列表:

Map<String, String> map = new HashMap<String, String>();
for (Spot s : spots) map.put(s.id, s.name);

似乎您希望PID是唯一的(给定PID,您可以找到相应的名称)。因此,您可能只需要使用一个地图,而不是地图列表:

Map<String, String> map = new HashMap<String, String>();
for (Spot s : spots) map.put(s.id, s.name);

您可能应该使用域类而不是
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));

您可能应该使用域类而不是
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));

谢谢:D但是当我发布这个问题的时候,我只使用了名字和PID来简化它,但是我还需要添加其他6个。我可以用同样的方法吗?你的问题越具体,你就会得到最好的答案!如果所有字段都链接到pid,你可以创建一个类来包装这6个字段,并使用
Map
来代替。我尝试从下面使用这个类,但当我将Map改为Map时出现了错误,尽管它说它需要更多的变量。谢谢:D但是当我发布这个问题时,我简化了它,只使用了name和PID,但我还需要添加其他6个变量信息技术我可以用同样的方法吗?你的问题越具体,你就会得到最好的答案!如果所有字段都链接到pid,您可以创建一个类来包装这6个字段,并使用
Map
来代替。我尝试从下面使用该类,但在将Map更改为Map时出错,尽管它说需要更多变量。谢谢,但它在Map和hashmap下面加了下划线,表示参数数量不正确。另外,我如何为equals()和hashcode()添加覆盖?请确保首先导入它们。对于
equals()
hashCode()
请查看Apache Commons中的构建器:以及映射和HashMap。如果您这样做了,但仍然出现错误,那么您使用的是哪个jdk版本?两者都是导入的。如何检查jdk?我只是在使用eclipse,不记得更改过jdk,所以我猜默认值我也尝试过使用map而不是just,但这不起作用谢谢,但它在map和hashmap下面加了下划线,表示参数数量不正确。另外,我如何为equals()和hashcode()添加覆盖?请确保首先导入它们。对于
equals()
hashCode()
请查看Apache Commons中的构建器:以及映射和HashMap。如果您这样做了,但仍然出现错误,那么您使用的是哪个jdk版本?两者都是导入的。如何检查jdk?我只是在使用eclipse,不记得更改过jdk,所以我猜默认值我也尝试过使用map而不是just,但这也不起作用