Java如何搜索用户输入是否等于我的数组中的某些内容

时间:2014-04-03 06:06:56

标签: java arrays arraylist

您好我的目标是让用户输入一些customerID值和一些videoID我如何检查以确保用户输入正确的customerIDvideoID在我的数组中,我为这些字段做了并告诉用户他们输入了错误的ID。这是我到目前为止我的代码

    public static void HireVideo(){

        System.out.println("Enter Customer ID");
        String customerID = sc.next();
        System.out.println("Enter Video ID");
        String videoID = sc.next();

        HireList.add(new Hire(customerID, videoID));
    }

1 个答案:

答案 0 :(得分:1)

努力尽可能接近您的代码(即我假设是一个静态列表包装类)。

public class HireList {
    private static List<Hire> hires = new ArrayList<Hire>();

    public static void add(Hire hire) {
        hires.add(hire);
    }

    public static boolean contains(Hire other) {
        return hires.contains(other);
    }
}
然而,魔法发生在Hire类:

public class Hire {
    private String customerId;
    private String videoId;

    public Hire(String customerId, String videoId) {
        this.customerId = customerId;
        this.videoId    = videoId;
    }

    @Override
    public int hashCode() {
        int hash = 3;
        hash = 67 * hash + Objects.hashCode(this.customerId);
        hash = 67 * hash + Objects.hashCode(this.videoId);
        return hash;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (this.getClass() != obj.getClass()) {
            return false;
        }
        final Hire other = (Hire) obj;
        if (!this.customerId.equals(other.customerId)) {
            return false;
        }
        if (!this.videoId.equals(other.videoId)) {
            return false;
        }
        return true;
    }
}

List<T>.contains(T other)使用T的等于方法,因此覆盖它将允许我们控制contains的行为。

试验:

public static void main(String[] args) {
    HireList.add(new Hire("1", "1"));
    HireList.add(new Hire("2", "2"));

    System.out.println(HireList.contains(new Hire("2", "2"))); //output: true
}

如果包含您所关注的全部内容,我建议使用HashSet而不是ArrayList