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

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

您可以在 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/

相关文章:

java - 是否有必要为基于通用数组的缓冲区实现可迭代?

java - 我的代码是线程安全的吗?如果没有的话如何实现线程安全?

java - 使用比较器接口(interface)对本地日期进行排序

java - 使用 XPath 检索集合的正确方法?

java - 如何检查 JSP 是否连接到数据库?

java - 具有超过 4680 个元素的 ArrayList 返回空白

java - 如何将 "Paint"形状从 arrayList 转换为 JPanel?

java - 将数据传递给方法

java - Eclipse:如何将Web项目转换为AspectJ项目并使用AJDT插件编织运行?

java - 从 Windows 资源管理器启动的 jar 的默认工作目录是什么?