【发布时间】:2013-04-19 09:57:38
【问题描述】:
我正在尝试使用 .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");
}
UserArchive 类:
public User findByName(String name) {
for (User u : list) {
if (u.getFirstName().equals(name)) {
return u;
}
}
return null;
}
【问题讨论】:
-
您的列表是整数列表(客户 ID)还是用户对象列表(客户)?
-
它是一个用户对象列表。最后一种方法是我在以前的版本中使用的方法。