1

リストを検索するにはどうすればよいですか? ビルド機能はありますか?

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();
        }
    }

}
4

6 に答える 6

1

まだ。Java 8 ではより適切なサポートが提供される予定ですが、現時点ではコードをより単純にすることができます

for(Employee e: list1)
    if(e.getEmptId() == empId)
        System.out.println("The searched item is " + e);
于 2013-09-12T07:50:34.490 に答える
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);
于 2013-09-12T07:50:45.503 に答える
1

あなたの場合、あなたが得るのと同じくらい簡単です

for (Employee e : list) { 
    if (e.getEmpid() == empId) {
       //found here .break
    }
}
于 2013-09-12T07:50:51.620 に答える
1

リストは持っ.contains(Object o)ている.remove(Object o)
ので、より良い方法は

public void removeEmployee(Employee e) {
   if (listEmplyees.contains(e)) {
       listEmplyees.remove(e);
   }
}


従業員オブジェクトまたは ID の場合:

public void removeEmployee(int i) {
   for(Employee e: listEmplyees) {
       if(e.getId == i) {
           listEmplyees.remove(e);
       }
   }
}

または、Employees を ID で Map に保存すると、ID で簡単に削除できます。また、従業員が繰り返されないようにしたい場合は、Employee クラスで set を使用して hashCode と equals をオーバーライドし、同じオブジェクトを見つけたときに検索ループにブレークを配置できます。

于 2013-09-12T08:57:18.800 に答える
0

リストには.contains()、リストにそのオブジェクトが含まれているかどうかを確認できるメソッドがあります。例:products商品のオブジェクトをリストに格納するリストがあります。

List<Product> products;
if(products.contains(tempProduct)){
     //    do some operations
}
于 2013-09-12T07:50:51.717 に答える