无法比较两个arraylist对象 import java.util.ArrayList; 导入java.util.List; 公共类arr{ 公共arr(){ //创建空列表 List alpha=新的ArrayList(); } 公共静态void main(字符串[]args){ arr com1=新的arr(); arr com2=新的arr(); //返回false但应为true这两个数组都是空的 com1.等于(com2); } }

无法比较两个arraylist对象 import java.util.ArrayList; 导入java.util.List; 公共类arr{ 公共arr(){ //创建空列表 List alpha=新的ArrayList(); } 公共静态void main(字符串[]args){ arr com1=新的arr(); arr com2=新的arr(); //返回false但应为true这两个数组都是空的 com1.等于(com2); } },java,arraylist,constructor,Java,Arraylist,Constructor,我试图创建一个可以构建空数组的类,但当我试图比较这两个对象时,它返回false,但这两个对象有一个空的arraylist,因此它应该返回true您可以使用size()方法检查arraylist的大小。签出此项以供进一步参考:您的代码语法错误 类arr Java约定说类名应该是名词,大小写混合,每个内部单词的第一个字母大写。所以让我们假设它被命名为ArrCreator arr()是一个方法,因此: 它必须有一个返回类型 它不能以静态方式访问,应该通过ArrCreator类的实例访问 因为它

我试图创建一个可以构建空数组的类,但当我试图比较这两个对象时,它返回false,但这两个对象有一个空的arraylist,因此它应该返回true

您可以使用size()方法检查arraylist的大小。签出此项以供进一步参考:

您的代码语法错误

  • 类arr

    • Java约定说类名应该是名词,大小写混合,每个内部单词的第一个字母大写。所以让我们假设它被命名为ArrCreator
  • arr()是一个方法,因此:

    • 它必须有一个返回类型
    • 它不能以静态方式访问,应该通过ArrCreator类的实例访问
    • 因为它创建的是一个空列表,而不是一个空数组,所以让我们将其重命名为createEmptyList()
命名仍然很混乱,但现在至少你可以看到它正在编译(我希望)

import java.util.ArrayList;
导入java.util.List;
公共类创建者
{    
公共列表createEmptyList()
{
//创建空列表
List alpha=新的ArrayList();
返回α;
}
公共静态void main(字符串[]args)
{
ArrCreator=新的ArrCreator();
List com1=creator.createEmptyList();
List com2=creator.createEmptyList();
System.out.println(com1.equals(com2));
}
}

输出:true

您正在尝试调用名为
isEmpty()的缺少的方法

您还需要将列表
alpha
作为类的字段移动,以便
isEmpty()
方法可以访问它

要检查相等性,只需重载
equals()
方法

正如@Billy提到的,您也应该重写hashCode(这样,如果您稍后在代码中使用hashSet/hashMap存储arr类,它仍然可以工作)

import java.util.ArrayList;
导入java.util.List;
公共类arr{
List alpha=新的ArrayList();
//创建isEmpty方法
布尔isEmpty(){返回alpha.isEmpty();}
//检查两个arr等级是否相同
@凌驾
公共布尔等于(对象obj){
如果(obj==this)返回true;
如果(obj==null | | obj.getClass()!=this.getClass())
返回false;
arr其他=(arr)obj;
//检查其alpha是否与obj中的alpha相同
返回alpha.equals(其他alpha);
}
//还要重写hashCode方法,以便它能正确地用于hashMap和hashSet等散列容器。
@凌驾
public int hashCode(){return alpha==null?0:alpha.hashCode();}
公共静态void main(字符串[]args){
arr com1=新的arr();
arr com2=新的arr();
//从main调用isEmpty()方法。
System.out.println(“com1 Empty?=”+com1.isEmpty());
//检查com1和com2是否相等
System.out.println(“com1与com2相同?=”+com1.equals(com2));
}
}

您可以检查alpha.size()==0;挑剔:你应该在
PascalCase
中写你的类名,因为这是java的惯例,例如
Arr
。或者更好的是,
Array
@DebadattaMishra我的观点是我试图比较两个对象(com1和com2),而不是alpha@Bigbenz,有关如何检查相等性,请参见编辑的答案。如果你覆盖了
equals
,你也应该覆盖
hashCode
@Bigbenz-所以只需要将它们与equals进行比较并打印结果。我已经更新了解决方案。
import java.util.ArrayList;
import java.util.List;

public class arr {
    public arr () {
// creat empty list
        List<Integer> alpha = new ArrayList<>();
    }
    public static void main (String []args ) {
        arr com1 = new arr();
        arr com2= new arr();
//returning false but should be true the two are empty array
        com1.equals(com2);
    }

}
import java.util.ArrayList;
import java.util.List;    

public class ArrCreator
{    
    public List<Integer> createEmptyList()
    {
        // create empty list
        List<Integer> alpha = new ArrayList<>();
        return alpha;
    }

    public static void main(String[] args)
    {
        ArrCreator creator = new ArrCreator();

        List<Integer> com1 = creator.createEmptyList();
        List<Integer> com2 = creator.createEmptyList();

        System.out.println(com1.equals(com2));
    }
}
import java.util.ArrayList;
import java.util.List;

public class arr {
    List<Integer> alpha = new ArrayList<>(); 

    //creates the isEmpty method 
    boolean isEmpty() {return alpha.isEmpty();}

    //check if two arr classes are the same
    @Override
    public boolean equals(Object obj) {
       if (obj == this)   return true; 
       if (obj == null || obj.getClass() != this.getClass())   
           return false; 

       arr other = (arr) obj;
       //checks if the alpha of this is the same as the alpha in obj
       return  alpha.equals(other.alpha);
    }

    //also override the hashCode method so that it'll work correctly for hash containers like hashMap and hashSet.
    @Override
    public int hashCode(){ return alpha==null?0: alpha.hashCode(); }

    public static void main (String []args ) {
        arr com1 = new arr();
        arr com2= new arr();

       //calling the isEmpty() method from the main.
       System.out.println("com1 Empty? =" +com1.isEmpty());
       //checks if com1 and com2 are equal
       System.out.println("com1 same as com2? =" +com1.equals(com2));
    }

}