在项目中需要取出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);
}