Java 我有一个hashset,希望只打印两个对象,而不使用迭代器或for循环。但我得到了错误?
如何检查Java 我有一个hashset,希望只打印两个对象,而不使用迭代器或for循环。但我得到了错误?,java,arrays,collections,hashset,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])); 在集合中存储的是整数值,而不是字符串 这应该适合您: HashSet<Integer> h=new HashSet<>(); h.add(123); h.add(456); h.add(789); h
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]));
在集合中存储的是整数值,而不是字符串 这应该适合您:
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 h=newhashset();
h、 增加(123);
h、 增加(456);
h、 增加(789);
h、 增加(757);
h、 增加(989);
System.out.println((新的LinkedList(h)).subList(0,2));
但是HashSet中的顺序没有定义。首先,不应该使用这样的原始类型。
HashSet
类是一个泛型类,您应该指定typ参数应该是什么
您在示例中所做的是将整数放入哈希集中。因此,您需要将其声明/初始化为HashSet
,如下所示:
HashSet<Integer> h = new HashSet<>();
看看前两个元素
没有API允许您仅提取前两个元素作为数组,但是您可以通过手动分配数组并迭代集合以提取“前”两个元素来实现这一点。(当然要注意哈希集元素的顺序是未指定的……因此预测将获得哪些元素将是困难的。)
您没有说您遇到了什么错误,但我认为这是一个
ArrayStoreException
。您的HashSet
包含Integer
对象,并且您不能将Integer
放入String数组中,错误是什么?我猜这是因为使用的原始类型,您在集合中存储的是整数
值而不是字符串
-一个字符串[]
数组不能包含整数
对象。但即使您解决了这个问题(例如,通过使用新整数[2]
),它仍然不会只打印2(事实上,它会打印一些奇怪的东西,比如[Ljava.lang.Integer;@106d69c
+返回的数组包含所有5个元素),因为在没有迭代器或循环的情况下不能只打印2。它甚至不能使用字符串。@VinayakDwivedi如果有帮助,请随意向上投票和/或接受我的回答。它在内部使用迭代器打印列表。
Integer[] a = h.toArray(new Integer[h.size()]);