繁体   English   中英

如何在 HashMap 中检索 ArrayList 值内的元素?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM