我声明了一个HashSet,并希望用一个也声明的数组填充它。但是当我想用数组的元素填充它时,它会起作用。我已经尝试输出文本所在的输出。问题是,即使文本也没有出现在输出中。我找不到自己的错误。 这是麻烦的程序的一部分
public void part8(){
HashSet<Book> set = new HashSet<Book>();
Iterator iter = set.iterator();
//put array into hashset
for ( int i = 0; i < set.size(); i ++){
System.out.println("Test");
set.add(book[i]);
}
//print hashset
System.out.println("Ausgeben der HashSet");
while(iter.hasNext()) {
System.out.println(set);
}
//add a duplicate, which shouldn't be shown in the output
set.add(book[5]);
//try to show the hashset after adding duplicate
System.out.println("Ausgeben der HashSet nach hinzufügen des Duplikats");
System.out.println(set);
//TreeSet
TreeSet<Book> ts = new TreeSet<Book>();
//hmake treeset from hashset
ts.addAll(set);
//print treeset
System.out.println("Ausgeben der TreeSet");
System.out.println(ts);
}
谢谢你们的帮助。
答案 0 :(得分:2)
至于这段代码,有一些问题:
//put array into hashset
for ( int i = 0; i < set.size(); i ++){
System.out.println("Test");
set.add(book[i]);
}
此循环永远不会执行,因为集size
为0.您应该将set.size()
更改为book.length
。
//print hashset
System.out.println("Ausgeben der HashSet");
while(iter.hasNext()) {
System.out.println(set);
}
我想在此处打印set
内容。相反,您应该通过以下方式替换循环内容:
Book book = iter.next();
System.out.println(book.toString()); //Print whatever you want
编辑:正如@Lucas Oliveira所说,您还可以通过以下方式插入数组中的每个成员:set.addAll(Arrays.asList(book));
答案 1 :(得分:1)
只需更改此部分:
//put array into hashset
for ( int i = 0; i < set.size(); i ++){
System.out.println("Test");
set.add(book[i]);
}
到
set.addAll(Arrays.asList(book));
并且数组中的所有元素都将相关地添加...
... PS
您还应该更改此部分:
//print hashset
System.out.println("Ausgeben der HashSet");
while(iter.hasNext()) {
System.out.println(set);
}
类似
for(final Book book: set){
System.out.println(book);
}
为了打印出集合中包含的每本书....
答案 2 :(得分:0)
问题在于以下代码:
//put array into hashset
for ( int i = 0; i < book.length; i ++){
System.out.println("Test");
set.add(book[i]);
}
因为您已在行HashSet<>
中创建了新的HashSet<Book> set = new HashSet<Book>();
。由于它刚刚创建且尚未插入element
,因此调用set.size()
将返回0
,因此for-loop
的正文将不再迭代
更正后的代码如下:
//put array into hashset
for ( int i = 0; i < set.size(); i ++){
System.out.println("Test");
set.add(book[i]);
}
答案 3 :(得分:0)
你用空集迭代!
替换:
//put array into hashset
for ( int i = 0; i < set.size(); i ++){
System.out.println("Test");
set.add(book[i]);
}
with:
//put array into hashset
for ( int i = 0; i < book.length; i ++){
System.out.println("Test");
set.add(book[i]);
}
或:
//put array into hashset
set.addAll(Arrays.asList(book));