我有hashmap
名为gg
。我想使用keySet()
方法取出它的密钥,并将它们作为另一个方法的参数传递。
method_A( gg.keySet());
public void method_A(ArrayList<Integer> jj){
....
}
但是我收到了这个错误:
error: incompatible types: Set<Integer> cannot be converted to ArrayList<Integer>
。
然后我看到了这个:
method_A (new ArrayList<Integer>(gg.keySet()));
它到底在做什么?看起来像是铸造给我。我很困惑。有人可以向我解释发生了什么事吗?
答案 0 :(得分:2)
new ArrayList<Integer>(gg.keySet())
不是类型转换。它更像是一个复制构造函数(虽然实际的复制构造函数通常采用的是与实例化相同类型的参数,但这不是这种情况。)
它正在使用接受ArrayList<Integer>
作为参数的构造函数创建一个新的Collection
实例。它会将Collection
中找到的所有元素添加到新ArrayList
。
这是构造函数的文档:
/**
* Constructs a list containing the elements of the specified
* collection, in the order they are returned by the collection's
* iterator.
*
* @param c the collection whose elements are to be placed into this list
* @throws NullPointerException if the specified collection is null
*/
public ArrayList(Collection<? extends E> c)