![](/img/trans.png)
[英]How can I retrieve the value in a Hashmap stored in an arraylist type hashmap?
[英]How to retrieve an element inside an ArrayList value in a HashMap?
我是 Java 的新手,我正在努力找出一些微不足道的东西。
我有一个HashMap
,其键类型为String
,值类型为ArrayList <String>
,它返回如下内容:
dict = {Color=[Blue, Purple]}
我正在努力弄清楚如何从 dict 的值中从数组中获取特定元素。 就像我得到dict.value[0]
一样,它会返回字符串“Blue”。
我试过做:
Object values = dict.values().toArray[0];
我假设因为我将它更改为一个数组,所以我可以执行values.get(0)
之类的操作来获取第一个元素,但这不起作用,因为 values 是类型Object
。 关于如何解决这个问题的任何想法?
如果您的HashMap
是这样的:
Map<String, List<String>> myColorsMap = new HashMap<>();
填充 map 后就像:
{Red=[firstRed, secondRed, thirdRed], Blue=[firstBlue, secondBlue, thirdBlue]}
然后您可以检索Blue的键值(一个List
),例如:
String blueFirstElement = myColorsMap.get("Blue").get(0); // --> will give first element of List<String> stored against Blue key.
要收集 map(或“字典”)中的所有键:
myColorsMap.keySet();
会给:
[Red, Blue]
当你这样做时:
Object values = dict.values().toArray[0];
首先,这是错误的。 你试图做的是:
Object values = dict.values().toArray();
它返回Object[]
并且它是模棱两可的。 没必要那样做。 Java 的Map
接口和HashMap
实现有很多实用方法供您迭代和检索值。
首先,在 map 上使用.get()
使用密钥获取 ArrayList
List<String> colors = dict.get("Color");
然后在列表上使用.get()
来获取使用索引的元素
String color = colors.get(0);
您可以通过这种方式在一行中执行此操作
String color = dict.get("Color").get(0);
您正在尝试使用dict.values().toArray[0]
这是错误的语法,这就是问题所在。 dict.values()
将返回Collection<List<String>>
,您可以通过这种方式获取值列表
List<List<String>> listOfValues = new ArrayList<>(colorsMap.values());
然后您可以使用.get()
通过索引访问每个值
List<String> colors = listOfValues.get(0);
注意:HashMap 不存储任何订单。
转换为java.util.List
类型,然后可以通过索引获取值。
@SuppressWarnings("unchecked")
public static void main(String[] args) {
Map<String, List<String>> map = new HashMap<>(2);
map.put("color", Arrays.asList("blue", "yellow", "green", "white"));
map.put("size", Arrays.asList("small", "medium", "large"));
List<String> o = (List<String>) map.values().toArray()[0];
System.out.println(o.get(0)); //output is 'blue'
List<String> s = (List<String>) map.values().toArray()[1];
System.out.println(s.get(1)); //output is 'medium'
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.