不兼容的类型:Person(类)无法转换为java.util.arraylist <person>

时间:2017-10-02 21:24:37

标签: java arraylist

我有两个班,人和网络。 我有一个代表人物的对象的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;
}

2 个答案:

答案 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;();