在项目中需要取出Map的值集转成List使用,因为map.valaues() 方法返回的是一个Collection类型对象,于是很自然的想到了下面的写法。

@Test
public void test1() {
    Map<String,Integer> map = new HashMap<>();
    map.put("one",  1);
    map.put("two",  2);
    map.put("three",3);
    List<Integer> list = (ArrayList<Integer>)map.values();
    System.out.println("list = " + list);
}

然后就产生了下面的报错:

正确的做法应该是:

@Test
public void test2() {
    Map<String,Integer> map = new HashMap<>();
    map.put("one",1);
    map.put("two",2);
    map.put("three",3);
    // 方式一: 使用 ArrayList的构造函数 public ArrayList(Collection<? extends E> c)
    List<Integer> res = new ArrayList<>(map.values());
    System.out.println("res = " + res);
    
    // 方式二: 使用迭代器
    Collection<Integer> values = map.values();
    Iterator<Integer> iterator = values.iterator();
    List<Integer> res1 = new ArrayList<>();
    while(iterator.hasNext()) {
        Integer next = iterator.next();
        res.add(next);
    }
    System.out.println("res1 = " + res1);

}
最后修改:2022 年 04 月 17 日
请博主喝杯咖啡~~~