迭代和处理ArrayList

Mag*_*ggi 4 java filtering arraylist

我有一个List对象.我想迭代这个对象列表并根据条件处理一些对象子集,最后创建一个新的对象列表,其中一些已处理的对象被删除.

做这个的最好方式是什么.?

例:

实际对象: List<Cars>

  1. 遍历此列表并Cars以相同的速度查找.
  2. 在较小的一组中Cars,要消除相同型号的那些.
  3. 最后消除后我得到了新的清单.

Boz*_*zho 7

Google Guava库有:

Iterables.filter(cars, new Predicate<Car>() {
    @Override
    public boolean apply(Car car) {
         //return true or false depending on whether you 
         // want this car to remain in the list
    }
}
Run Code Online (Sandbox Code Playgroud)

你也可以使用中间体Set- 即

 cars = new ArrayList<Car>(new HashSet<Car>(cars));
Run Code Online (Sandbox Code Playgroud)

你正确实施hashCodeequals.如果这是您汽车标识,则此选项是可行的.


您还可以使用迭代器:

for (Iterator<Car> it = cars.iterator(); it.hasNext();) {
    Car car = it.next();
    if (conditions here) {
         it.remove();
    }
}
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我知道上面的例子并没有完全解决你的问题 - 你仍然应该考虑在外部循环中迭代什么.