您好我的目标是让用户输入一些customerID
值和一些videoID
我如何检查以确保用户输入正确的customerID
和videoID
在我的数组中,我为这些字段做了并告诉用户他们输入了错误的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));
}
答案 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
。