查看java集合框架的java API,我在HashSet中找不到toArray()方法,在抽象类Set中有toArray()方法。
class Ideone {
public static void main (String[] args) throws java.lang.Exception {
Set x = new HashSet();
x.add(4);
//ArrayList<Integer> y = x.toArray(); this does not work !
int[] y = x.toArray();//this does not work!
System.out.println(x.toArray());//this gives some weird stuff printed : Ljava.lang.Object;@106d69c
}
}
如果没有指定toArray(),如何将hashset转换为数组?
7条答案
按热度按时间gmxoilav1#
当然
HashSet
实现了toArray
。它必须实现它,因为它实现了Set
接口,该接口指定了此方法。实际实现在AbstractCollection
中,AbstractCollection
是AbstractSet
的超类,AbstractSet
是HashSet
的超类。首先,不应该使用原始类型。
用途:
然后转换为数组:
使用
x.toArray()
会得到一个Object[]
。q5lcpyga2#
确保为
HashSet
声明泛型并将其转换为如下数组:
0pizxfdo3#
第一行
数组列表y = x.到数组();这是行不通的!
首先你使用了
Set x = new HashSet();
,也就是原始类型,编译器不知道它会包含整型对象,但是在左手的上面一行,你说它会是整型的数组列表,而实际上它是一个数组第二行
整数[] y = x.到数组();//这不起作用!
上面一行在左手,你说它是整型数组,而实际上它是对象数组
这样就行了
但这不是正确的方法,您不应该使用原始类型
系统输出打印入(x.toArray());//打印出一些奇怪的东西:语言对象; @106d69c时
它打印数组对象的字符串表示,这就是为什么你会看到它是
Ljava.lang.Object;@106d69c
如果要打印每个元素,请遍历它,然后打印它。
esbemjvw4#
看起来你最初想创建一个数组列表而不是一个简单的数组。所以,试试这个!
eqqqjvef5#
JDK 7中使用
TreeSet
、ArrayList
和Array
对小Map进行排序的比较:产量:
树集:1527毫秒。
数组列表:943毫秒。
阵列:485 ms。
ahy6op9u6#
我们可以迭代循环并将值存储到数组中。
wlwcrazw7#
你可以把一个hashset转换成arraylist然后再转换成arrays int[].如果你想动态地把它转换回array,这个方法是很好的.
这将是一种一步到位的解决方案。