在Java for Android中从列表中删除项目的最酷(高级/高效)方法是什么?

时间:2015-09-21 17:02:01

标签: java android list

我想从java pro那里删除列表中的项目的最佳方法?

我一直在使用的场景是让我说我​​有对象Ball的列表,我想删除所有颜色为“RED”的球

Ball {
    private String Color;
}

我能提出的最佳方式是

Iterator<Balls> i = lst.iterator();
    while (i.hasNext()) {
      if     (i.next().getColor().equals("RED")) {
    i.remove();
  }

return lst;

我想知道是否有更好/更简洁的方法来执行此操作,使用集合或任何其他库。请记住我正在为Android编写代码,因此无法使用Java 8中的流。我正在使用retrolambda,但它仍然不支持流。

2 个答案:

答案 0 :(得分:1)

根据您选择的数据结构,没有“更好”的方法。您没有任何选择,只能逐个迭代和删除元素。如果您的列表已排序,您可能会在某些情况下获得一些性能改进,但如果不知道您的约束我就不会打扰。有些API可能会为您提供更简洁的方法(尽管我不会打赌 - 毕竟你使用的是Java),但从根本上说它们仍会迭代列表。

如果快速访问对您至关重要,您可以尝试使用字典(HashMap),但实际上,为什么要这么麻烦?如果你想优化你的代码,你可能会专注于错误的事情。如果你想改进它,使它更简洁可能不是最好的主意,因为它可能导致无法读取的代码。

答案 1 :(得分:0)

我使用guava库中的Iterable过滤器:

    final Iterable<Ball> filterRedBalls = Iterables.filter(Ball, 
        ball -> !(ball.getColor().equals("RED")));`

我认为这为任务提供了更清晰,更短的代码。我没有做过任何事 进行基准测试以确定是否有任何性能改进。