如何在Java中使用自定义类型ArrayList包含? [英] How To Use Contains on Custom Type ArrayList in java?

查看:235
本文介绍了如何在Java中使用自定义类型ArrayList包含?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在这里如何使用包含来搜索名称?我想使用.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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆