Mag*_*ggi 4 java filtering arraylist
我有一个List对象.我想迭代这个对象列表并根据条件处理一些对象子集,最后创建一个新的对象列表,其中一些已处理的对象被删除.
做这个的最好方式是什么.?
例:
实际对象: List<Cars>
Cars以相同的速度查找.Cars,要消除相同型号的那些.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)
你正确实施hashCode和equals.如果这是您汽车的标识,则此选项是可行的.
您还可以使用迭代器:
for (Iterator<Car> it = cars.iterator(); it.hasNext();) {
Car car = it.next();
if (conditions here) {
it.remove();
}
}
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我知道上面的例子并没有完全解决你的问题 - 你仍然应该考虑在外部循环中迭代什么.
| 归档时间: |
|
| 查看次数: |
4109 次 |
| 最近记录: |