如何在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; } 

}

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

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

 static void containsName1(List 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 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 dtArrayLst = new ArrayList(); 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/

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