我正在尝试使用 .contains() 搜索我的 arrylist。
这是我在窗口类中的方法:
public void findByID() {
int customer = Integer.parseInt(findCustomerField.getText());
if (userA.list.contains(customer)) {
User user = userA.findById(customer);
output.setText(user.toString());
}
}
在我以前的版本中,我使用 customerID 来查找客户,我的 UserArchive 类中的 findByID 方法如下所示:
public User findById(int id) {
for (User u : list) {
if (u.getCustomerID() == id) {
return u;
}
}
return null; // or empty User
}
如果我想使用 .contains(),最后一个方法应该如何?我认为窗口类方法还可以,不确定。我对使用 contains 感到毫无头绪(昨天才听说)。
编辑:我不想再使用 customerID 来查找对象(这就是以前的版本所做的) 我的目标是能够键入例如“Peter”,然后找到包含“Peter”的所有对象。根据我的理解,这可以通过以某种方式使用 .contains() 来实现。
编辑2:我让它工作。现在我可以搜索特定的名字并将其打印出来。编辑目标:我真正想要的是搜索例如“Pe”,然后获取列表中包含“Pe”的每个对象,而不仅仅是名字。将调查 Akshay Singhal 发布的内容。以下是适用于 firstName 的方法:
窗口类:
public void findByID() {
String customer = findCustomerField.getText();
if (!customer.equals("")) {
User user = userA.findByName(customer);
output.setText(user.toString());
}
else
JOptionPane.showMessageDialog(this, "Does not exist");
}
用户存档类:
public User findByName(String name) {
for (User u : list) {
if (u.getFirstName().equals(name)) {
return u;
}
}
return null;
}