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

时间:2017-09-20 21:31:13

标签: java arraylist

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

本程序我为使用自定义类型数据类型创建了一个类名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");
    }

或者,

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

}

2 个答案:

答案 0 :(得分:1)

您应该可以通过覆盖自定义类中的equals方法来执行此操作。当覆盖equals方法时,好的做法也会覆盖hashcode方法。

答案 1 :(得分:1)

Java中的覆盖equals方法是一个很好的观点,正如JavaProgrammer12所说的那样。

这是一个简单的例子。

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

你可以在主要课程中测试。 例如,

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

如果您想了解重写equals方法,那么有一个很好的参考站点。

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