如何在列表中搜索?在构建函数中有没有?
public void searchEmployee(int empId) {
Iterator<Employee> iterator = list1.iterator();
while (iterator.hasNext()) {
if (iterator.next().getEmpid() == empId) {
System.out.println("the searched employee is ::");
iterator.remove();
}
}
}
答案 0 :(得分:1)
还没有。 Java 8中会有更好的支持,但是现在你可以使代码更简单
for(Employee e: list1)
if(e.getEmptId() == empId)
System.out.println("The searched item is " + e);
答案 1 :(得分:1)
List#contains()
方法。但在您的情况下,由于您需要根据empId
进行搜索,因此您需要覆盖此equals()
类中的Employee
。
@Override
public boolean equals(Object obj) {
if (obj != null) {
Test other = (Test) obj;
return i == other.i;
} else {
return false;
}
}
然后你可以这样做:
list1.remove(yourEmp);
答案 2 :(得分:1)
在你的情况下,尽可能简单
for (Employee e : list) {
if (e.getEmpid() == empId) {
//found here .break
}
}
答案 3 :(得分:1)
列表包含.contains(Object o)
和.remove(Object o)
所以更好的方法是
public void removeEmployee(Employee e) {
if (listEmplyees.contains(e)) {
listEmplyees.remove(e);
}
}
对于Emplyee对象或Id:
public void removeEmployee(int i) {
for(Employee e: listEmplyees) {
if(e.getId == i) {
listEmplyees.remove(e);
}
}
}
或者您可以通过他们的ID在Map中存储Employees,并且更容易通过id删除。如果你想确保员工永远不会重复 - 在你的Employee类中使用Set和override hashCode和equals,那么当你找到相同的对象时,你可以在你的搜索循环中放置break。
答案 4 :(得分:0)
列表具有.contains()
方法,您可以通过该方法检查列表是否包含该对象。例如:我有一个列表products
,它将产品的对象存储在列表中。
List<Product> products;
if(products.contains(tempProduct)){
// do some operations
}
答案 5 :(得分:0)
您可以尝试使用内置函数binarySearch: http://docs.oracle.com/javase/6/docs/api/java/util/Collections.html#binarySearch(java.util.List,T,java.util.Comparator)