我有一个对象列表,这些对象都有一个名为AssetType的枚举值,是否可以使用keepAll()方法对列表进行排序,以便仅保留具有AssetType.BANK_ACCOUNT的对象?

提前寻求任何帮助。

最佳答案

(公开:我为番石榴做出了贡献。)

一个更直观的基于番石榴的实现将是

Iterables.removeIf(allAssets, new Predicate<MyObject>() {
  public boolean apply(MyObject asset) {
    return asset.getAssetType() != AssetType.BANK_ACCOUNT;
  }
});


...也就是说,老实说,我更喜欢笨拙的纯Java实现:

Iterator<MyObject> itr = allAssets.iterator();
while (itr.hasNext()) {
  if (itr.next().getAssetType() != AssetType.BANK_ACCOUNT) {
    itr.remove();
  }
}

10-05 23:00