我有两个班,人和网络。 我有一个代表人物的对象的arraylist和一个返回他们的朋友列表的方法。我正在尝试使用此方法将朋友添加到每个人。
public void loadNetwork() {
ArrayList<Person> persons = new ArrayList<>();
for (Person person : persons) {
System.out.println("Finding friends of " + person.getName());
ArrayList<String> friendNames = friends(person.getName());
for (String friendName : friendNames) {
System.out.println(" * " + friendName);
ArrayList<Person> friendS = lookupPerson(friendName);
for(Person friend : friendS) {
person.addFriend(friend);
}
}
}
}
无论我做什么,我似乎无法使它工作,我不断得到错误。 返回朋友的方法。
public ArrayList<String> friends(String personName) {
ArrayList<String> result = new ArrayList<>();
if (personName.equals("Aage")) {
result.add("Bård");
result.add("Dag");
} else if (personName.equals("Bård")) {
result.add("Aage");
result.add("Christian");
} else if (personName.equals("Christian")) {
result.add("Bård");
result.add("Dag");
result.add("Even");
} else if (personName.equals("Dag")) {
result.add("Aage");
result.add("Christian");
result.add("Liv");
} else if (personName.equals("Even")) {
result.add("Christian");
result.add("Fridtjof");
result.add("Gerda");
result.add("Hulda");
result.add("Ingrid");
result.add("Jorunn");
} else if (personName.equals("Fridtjof")) {
result.add("Even");
result.add("Gerda");
result.add("Hulda");
} else if (personName.equals("Gerda")) {
result.add("Even");
result.add("Jorunn");
result.add("Ingrid");
} else if (personName.equals("Hulda")) {
result.add("Even");
result.add("Fridtjof");
} else if (personName.equals("Gerda")) {
result.add("Even");
result.add("Jorunn");
result.add("Ingrid");
} else if (personName.equals("Ingrid")) {
result.add("Even");
result.add("Gerda");
result.add("Jorunn");
result.add("Kerstin");
result.add("Liv");
} else if (personName.equals("Jorunn")) {
result.add("Even");
result.add("Gerda");
result.add("Ingrid");
} else if (personName.equals("Kerstin")) {
result.add("Ingrid");
result.add("Liv");
} else if (personName.equals("Liv")) {
result.add("Dag");
result.add("Ingrid");
result.add("Kerstin");
}
return result;
}
我的lookupPerson方法
public Person lookupPerson(String personName) {
boolean personContain = persons.contains(new Person(personName));
for (Person p: persons) {
if (p.getName().equals(personName)) {
return p;
}
}
return null;
}
答案 0 :(得分:2)
根据此编译错误:
不兼容的类型:Person(类)无法转换为 的java.util.ArrayList
问题可能出现在显示的代码中,这是可能导致此类错误的单个语句:
ArrayList<Person> friendS = lookupPerson(friendName);
lookupPerson()
会返回Person
而不是ArrayList
Person
,但您要将其分配给ArrayList
Person
。< BR />
作为旁注,您应该按接口编程,将List
改为ArrayList
作为声明类型。
因此,要解决您的问题,请将lookupPerson()
更改为声明为:
List<Person> lookupPerson()
或将结果分配给Person
变量。
答案 1 :(得分:0)
您创建的数组中没有任何数据。你的声明是一个新的空数组。
ArrayList persons = new ArrayList&lt;&gt;();