我有一个hashset只想打印两个没有迭代器或循环的对象。但我收到错误?

时间:2016-07-07 08:33:52

标签: java arrays collections hashset

如何检查

HashSet h=new HashSet();
h.add(123);
h.add(456);
h.add(789);
h.add(757);
h.add(989);
System.out.println( h.toArray(new String[2]));

2 个答案:

答案 0 :(得分:1)

首先,您不应该使用像这样的 raw 类型。 HashSet类是泛型类,应该指定typ参数应该是什么。

您在示例中所做的是将整数放入hashset中。因此,您需要将其声明/初始化为HashSet<Integer>,如下所示:

HashSet<Integer> h = new HashSet<>();

然后,将内容提取到数组中,您应该这样做:

Integer[] a = h.toArray(new Integer[h.size()]);

并查看前两个元素。

没有API可以让您只将前两个元素作为数组提取,但是您可以通过手动分配数组并迭代该集合来拉出“第一个”两个元素来实现这一点。 (当然注意到HashSet的元素的顺序是未指定的 ...所以预测哪些元素将会变得困难。)

您没有说出您遇到的错误,但我希望它是ArrayStoreException。您的HashSet包含Integer个对象,但您无法将Integer放入String数组中。

答案 1 :(得分:0)

您在Set not Strings中存储Integer值

这应该适合你:

HashSet<Integer> h=new HashSet<>();
h.add(123);
h.add(456);
h.add(789);
h.add(757);
h.add(989);
System.out.println((new LinkedList<T>(h)).subList(0, 2));

但是HashSet中的顺序并不是明确的。