有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我是Java新手,我正在努力找出一些琐碎的东西

我有一个HashMap类型为String的键和类型为ArrayList <String>的值,它返回如下内容:

dict = {Color=[Blue, Purple]}

我正在努力弄清楚如何从dict值的数组中获取一个特定元素。比如,如果我得到dict.value[0],它将返回字符串“Blue”

我试过做:

Object values = dict.values().toArray[0];

我假设因为我把它改成了一个数组,我可以做一些类似于values.get(0)的事情来获取第一个元素,但是这不起作用,因为值的类型是Object。有没有办法解决这个问题


共 (3) 个答案

  1. # 1 楼答案

    如果您的HashMap类似于:

    Map<String, List<String>> myColorsMap = new HashMap<>();
    
    

    填充后的地图如下所示:

    {Red=[firstRed, secondRed, thirdRed], Blue=[firstBlue, secondBlue, thirdBlue]}
    

    然后您可以检索Blue的键值(aList),如:

    String blueFirstElement = myColorsMap.get("Blue").get(0); //  > will give first element of List<String> stored against Blue key.
    

    要获取地图(或“字典”)中所有键的集合,请执行以下操作:

    myColorsMap.keySet();
    

    将提供:

    [Red, Blue]
    

    当您这样做时:

    Object values = dict.values().toArray[0];
    

    首先,这是错误的。你想做的是:

    Object values = dict.values().toArray();
    

    返回Object[]且不明确。没必要那样做。Java的Map接口和HashMap实现有许多实用方法供您迭代和检索值

  2. # 2 楼答案

    强制转换为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'
    }
    
  3. # 3 楼答案

    首先,使用map上的.get()来使用key获取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()将返回{},您可以通过这种方式获取值列表

    List<List<String>> listOfValues = new ArrayList<>(colorsMap.values());
    

    然后可以使用.get()通过索引访问每个值

    List<String> colors = listOfValues.get(0);
    

    注意:HashMap不存储任何订单