Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在android中,从包含键值的列表中获取值的最佳方式是哪个集合_Java_Android_Collections - Fatal编程技术网

Java 在android中,从包含键值的列表中获取值的最佳方式是哪个集合

Java 在android中,从包含键值的列表中获取值的最佳方式是哪个集合,java,android,collections,Java,Android,Collections,我有一个ArrayList,如下所示: Id1, value1 Id1, value2 Id2, value1 Id2, value2 Id2, value3 Id3, value1 Id3, value2 Id3, value3 Id3, value4 Id3, value5 等等 在一个类中,我有id值。我必须获取与id值对应的值。例如,如果我给出id1,那么我需要value1和value2。我应该使用哪种收集机制来实现我的目标。我是一个初学者,请推荐我。提前谢谢。欢迎所有建议。假设键的

我有一个ArrayList,如下所示:

Id1, value1
Id1, value2
Id2, value1
Id2, value2
Id2, value3
Id3, value1
Id3, value2
Id3, value3
Id3, value4
Id3, value5 
等等


在一个类中,我有id值。我必须获取与id值对应的值。例如,如果我给出id1,那么我需要value1和value2。我应该使用哪种收集机制来实现我的目标。我是一个初学者,请推荐我。提前谢谢。欢迎所有建议。

假设键的类型为
String
,值的类型为
String
。您可以使用
地图

对于每个
id
将值存储在列表中,以便在查找
id
时可以检索所有值

下面是代码片段,它首先检查键是否已经存在,如果不存在,则创建新的空列表。这些值将添加到列表中并放入映射中。您可以使用
get(Key)
api从映射中检索值

public void add(String key, String value) {
  List<String> values = map.get(key);
  if (values == null) {
    values = new ArrayList<String>();
  }
  values.add(value);
  map.put(key, values);
}
public void add(字符串键、字符串值){
列表值=map.get(键);
如果(值==null){
值=新的ArrayList();
}
增加(价值);
map.put(键、值);
}

考虑番石榴的多重地图:


Guava是Google提供的一个库,它提供了许多有用的实用工具,这些工具在Java中是经常需要的。

Ok我将使用HashMap进行收集。稍后哪种HaspMap方法会有用,这样当我给出一个Id值时,我应该从集合中获得相应的值。感谢您的快速回复,我的Id是字符串值,我将有数组列表。我必须将id传递给一个方法,并且必须获得包含该键的值列表。你能解释一下怎么做吗?我想这里已经解释过了。使用
String
而不是
Integer
作为键。我也更新了。在add方法中,我们正在将值添加到列表中,对吗?我们将使用相同的方法获得与键值相关的值。如果我错了,请纠正我。我不理解add方法中的字符串参数。是的,它正在向列表中添加值。要返回值,可以使用MapAPI中的
get(Key)
。Ok。非常感谢。拿(钥匙)这是对的吗?