我想从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,但它仍然不支持流。
答案 0 :(得分:1)
根据您选择的数据结构,没有“更好”的方法。您没有任何选择,只能逐个迭代和删除元素。如果您的列表已排序,您可能会在某些情况下获得一些性能改进,但如果不知道您的约束我就不会打扰。有些API可能会为您提供更简洁的方法(尽管我不会打赌 - 毕竟你使用的是Java),但从根本上说它们仍会迭代列表。
如果快速访问对您至关重要,您可以尝试使用字典(HashMap
),但实际上,为什么要这么麻烦?如果你想优化你的代码,你可能会专注于错误的事情。如果你想改进它,使它更简洁可能不是最好的主意,因为它可能导致无法读取的代码。
答案 1 :(得分:0)
我使用guava库中的Iterable过滤器:
final Iterable<Ball> filterRedBalls = Iterables.filter(Ball,
ball -> !(ball.getColor().equals("RED")));`
我认为这为任务提供了更清晰,更短的代码。我没有做过任何事 进行基准测试以确定是否有任何性能改进。