gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 02:35:53 24 4
gpt4 key购买 nike

在这里如何使用 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;
}
}

您可以在 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();
}

如果您想了解重写 equals 方法,有一个很好的引用站点。

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

关于java - 如何在java中的自定义类型ArrayList上使用Contains?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46332059/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com