如何在java中的自定义类型ArrayList上使用Contains?

如何在java中的自定义类型ArrayList上使用Contains?,java,arraylist,Java,Arraylist,在这里,如何使用contains搜索名称?我想使用.contains匹配arrayList的输入结果 这个程序我创建了一个类名数据类型,用于使用自定义类型数据类型 arrayList.add(new DataType(name,Integer.parseInt(age))); System.out.println("Search Nme : "); String name=new Scanner(System.in).nextLine(); if (array

在这里,如何使用contains搜索名称?我想使用.contains匹配arrayList的输入结果

这个程序我创建了一个类名数据类型,用于使用自定义类型数据类型

    arrayList.add(new DataType(name,Integer.parseInt(age)));


    System.out.println("Search Nme : ");
    String name=new Scanner(System.in).nextLine();
    if (arrayList.contains(new DataType(name))) {
        System.out.println("Find");
    }
或者

    System.out.println("Search Nme : ");
    String name=new Scanner(System.in).nextLine();
    System.out.println("Search age: ");
    String age=new Scanner(System.in).nextLine();

    if (arrayList.contains(new DataType(name,Integer.parseInt(age)))) {
        System.out.println("Find");
    }
自定义数据类型类

static class DataType {

String Name;
int Age;

public DataType(String name,int age){
    Name=name;
    Age=age;
}


 public DataType(String name){
    Name=name;
}  

}

您应该能够通过重写自定义类中的equals方法来实现这一点。作为良好的实践,在重写equals方法时也重写hashcode方法

您应该能够通过重写自定义类中的equals方法来实现这一点。作为良好的实践,在重写equals方法时也重写hashcode方法

正如JavaProgrammer12所说,在java中重写equals方法是一个很好的观点

下面是一个简单的例子

static class DataType {

    String Name;
    int Age;

    public DataType(String name, int age) {
        Name = name;
        Age = age;
    }

    public DataType(String name) {
        Name = name;
    }

    @Override
    public boolean equals(Object fromObj) {
        DataType dt = (DataType)fromObj;

        if(Name == null) return false;
        if(dt.Age == Age) return true;
        if(dt.Name.equals(Name)) return true;

        return false;
    }
}
您可以在一个main中使用类进行测试。 比如说,

static void containsName1(List<DataType> dtArrayLst, Scanner sc) {
    System.out.print("Search Nme1 : ");

    String name = sc.nextLine();
    if (dtArrayLst.contains(new DataType(name))) {
        System.out.println("Find");
    }

    System.out.println();
}

static void containsName2(List<DataType> dtArrayLst, Scanner sc) {
    System.out.print("Search Nme2 : ");

    String name = sc.nextLine();

    System.out.print("Search age: ");
    String age = sc.nextLine();

    if (dtArrayLst.contains(new DataType(name, Integer.parseInt(age)))) {
        System.out.println("Find");
    }
    System.out.println();
}

public static void main(String[] args) {
    String name = "tommybee";
    String age = "100";

    List<DataType> dtArrayLst = new ArrayList<DataType>();

    dtArrayLst.add(new DataType(name, Integer.parseInt(age)));

    Scanner sc = new Scanner(System.in);

    containsName1(dtArrayLst, sc);
    containsName2(dtArrayLst, sc);

    sc.close();
}
static void containsName1(列表dtArrayLst、扫描仪sc){
系统输出打印(“搜索Nme1:”);
字符串名称=sc.nextLine();
if(dtArrayLst.contains(新数据类型(名称))){
System.out.println(“查找”);
}
System.out.println();
}
静态空隙容器2(列表dtArrayLst、扫描仪sc){
系统输出打印(“搜索Nme2:”);
字符串名称=sc.nextLine();
系统输出打印(“搜索年龄:”);
字符串年龄=sc.nextLine();
if(dtArrayLst.contains(新数据类型(名称,Integer.parseInt(年龄))){
System.out.println(“查找”);
}
System.out.println();
}
公共静态void main(字符串[]args){
String name=“tommybee”;
字符串年龄=“100”;
List dtArrayLst=new ArrayList();
add(新的数据类型(name,Integer.parseInt(age));
扫描仪sc=新的扫描仪(System.in);
containsName1(南卡罗来纳州德塔雷斯特);
containsName2(南卡罗来纳州德塔雷斯特);
sc.close();
}
如果您想了解重写equals方法,有一个很好的参考站点


正如JavaProgrammer12所说,在java中重写equals方法是一个很好的观点

下面是一个简单的例子

static class DataType {

    String Name;
    int Age;

    public DataType(String name, int age) {
        Name = name;
        Age = age;
    }

    public DataType(String name) {
        Name = name;
    }

    @Override
    public boolean equals(Object fromObj) {
        DataType dt = (DataType)fromObj;

        if(Name == null) return false;
        if(dt.Age == Age) return true;
        if(dt.Name.equals(Name)) return true;

        return false;
    }
}
您可以在一个main中使用类进行测试。 比如说,

static void containsName1(List<DataType> dtArrayLst, Scanner sc) {
    System.out.print("Search Nme1 : ");

    String name = sc.nextLine();
    if (dtArrayLst.contains(new DataType(name))) {
        System.out.println("Find");
    }

    System.out.println();
}

static void containsName2(List<DataType> dtArrayLst, Scanner sc) {
    System.out.print("Search Nme2 : ");

    String name = sc.nextLine();

    System.out.print("Search age: ");
    String age = sc.nextLine();

    if (dtArrayLst.contains(new DataType(name, Integer.parseInt(age)))) {
        System.out.println("Find");
    }
    System.out.println();
}

public static void main(String[] args) {
    String name = "tommybee";
    String age = "100";

    List<DataType> dtArrayLst = new ArrayList<DataType>();

    dtArrayLst.add(new DataType(name, Integer.parseInt(age)));

    Scanner sc = new Scanner(System.in);

    containsName1(dtArrayLst, sc);
    containsName2(dtArrayLst, sc);

    sc.close();
}
static void containsName1(列表dtArrayLst、扫描仪sc){
系统输出打印(“搜索Nme1:”);
字符串名称=sc.nextLine();
if(dtArrayLst.contains(新数据类型(名称))){
System.out.println(“查找”);
}
System.out.println();
}
静态空隙容器2(列表dtArrayLst、扫描仪sc){
系统输出打印(“搜索Nme2:”);
字符串名称=sc.nextLine();
系统输出打印(“搜索年龄:”);
字符串年龄=sc.nextLine();
if(dtArrayLst.contains(新数据类型(名称,Integer.parseInt(年龄))){
System.out.println(“查找”);
}
System.out.println();
}
公共静态void main(字符串[]args){
String name=“tommybee”;
字符串年龄=“100”;
List dtArrayLst=new ArrayList();
add(新的数据类型(name,Integer.parseInt(age));
扫描仪sc=新的扫描仪(System.in);
containsName1(南卡罗来纳州德塔雷斯特);
containsName2(南卡罗来纳州德塔雷斯特);
sc.close();
}
如果您想了解重写equals方法,有一个很好的参考站点


您没有指定使用哪种语言,请使用标记。这是一个java程序您没有指定使用哪种语言,请使用标记。这是一个java程序