如何在Java中使用自定义类型ArrayList包含? [英] How To Use Contains on Custom Type ArrayList in java?
问题描述
在这里如何使用包含来搜索名称?我想使用.contains匹配arrayList的输入结果.
In here how can I search name by using contains? I want to match my input result of arrayList by using .contains.
此程序我创建一个类名称DataType以使用自定义类型数据类型.
This Program I create a class name DataType for using custom type data type.
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;
}
}
推荐答案
在Java中重写equals方法是一个好主意.
Overriding equals method in java is a good point as JavaProgrammer12 said.
这是这种情况的简单示例.
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();
}
如果您想了解重写equals方法,可以找到很好的参考站点.
There is a good reference site if you want to learn about overriding equals method.
https://www.mkyong. com/java/java-how-to-overrides-equals-and-hashcode/
这篇关于如何在Java中使用自定义类型ArrayList包含?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!