简体   繁体   English

如何在Java中使用自定义类型ArrayList包含?

[英]How To Use Contains on Custom Type ArrayList in java?

In here how can I search name by using contains? 在这里如何使用包含来搜索名称? I want to match my input result of arrayList by using .contains. 我想使用.contains匹配arrayList的输入结果。

This Program I create a class name DataType for using custom type data type. 本程序我创建一个使用自定义类型数据类型的类名称DataType。

    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");
    }

Or, 要么,

    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");
    }

Custome Data Type Class 客户数据类型类

static class DataType {

String Name;
int Age;

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


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

} }

You should be able to do this by overriding equals method in your custom class. 您应该能够通过覆盖自定义类中的equals方法来执行此操作。 As good practice override hashcode method also when overriding equals method. 优良作法是在覆盖equals方法时也覆盖hashcode方法。

Overriding equals method in java is a good point as JavaProgrammer12 said. 正如JavaProgrammer12所说,在Java中重写equals方法是一个好方法。

Here is an simple example for this case. 这是此情况的一个简单示例。

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;
    }
}

And you can test with the class in a main. 您可以在主类中对该类进行测试。 For example, 例如,

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();
}

There is a good reference site if you want to learn about overriding equals method. 如果您想了解重写equals方法,可以找到很好的参考站点。

https://www.mkyong.com/java/java-how-to-overrides-equals-and-hashcode/ https://www.mkyong.com/java/java-how-to-overrides-equals-and-hashcode/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM