我在这个练习中使用了一个算法来实现。我有这个主要的:
public static void main(String[] args) {
Person a = new Person("Tony");
Person c = new Person("Luke");
Person o = new Person("Ann");
a.addFriends(c);
a.addFriends(o);
for(Person p: a.contacts())
System.out.println(p);
}
如果我用“a”替换“a.contacts()”并使用这个类,代码就可以工作了!但是如何使用“a.contacts()”实现 for-each 循环?谢谢
class Person implements Iterable<Person> {
private Set<Person> friends = new HashSet<Person>();
private String name;
public Person(String name){
this.name = name;
}
public void addFriends(Person o){
friends.add(o);
}
public String toString(){
return this.name;
}
@Override
public Iterator<Person> iterator() {
Iterator<Person> i = friends.iterator();
return i;
}
//Here the contacts method to implement!!
}
最佳答案
让您的contacts()
方法有一个返回类型Set of Person
....
public Set<Person> contacts() {
return friends;
}
所以现在下面的将起作用...
for (Person p : a.contacts()) {
System.out.println(p);
}
关于Java实现Iterable,对于每个和方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12129603/