如何比较两个数组列表,这些列表由属于同一个超类但各种子类的对象实例组成。

时间:2015-02-12 21:36:57

标签: java oop object if-statement arraylist

到目前为止,我想到了这一点。

public static boolean challenge(ArrayList<Thing> required, ArrayList<Thing> owned){

    boolean result=false;

    for(int i=0; i<=required.size(); i++)
    {
        for(int j=0; j<=owned.size(); j++)
        {
            ///compare each required to all owned
            ///if (required.get(i) instanceof owned.get(j))
            {   result=true;
            }

            /// else
            {
                result=false;
                break;
            }
        }   
    }

    return result;
}

它在if语句中给出了编译错误。 &#34; &#39;)&#39;预期&#34;

我有点失落。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

您可能希望改用required.get(i).getClass() == owned.get(j).getClass()

还要考虑使用'for each',例如

for(Thing r : required) {
    for (Thing o : owned) {
      if (r.getClass() ...
        ...
    }
}

答案 1 :(得分:0)

正如Alex Nevidomsky所说,instanceof应该与右侧部分的类型一起使用。应该是if (required.get(i) instanceof owned.get(j).getClass()) maybe this link will be helpful also