如何从此ArrayList中删除特定的矩形? 我想删除高于100的矩形。
ArrayList <Rectangle> array = new ArrayList <Rectangle> ();
for (int i = 0; i<array.size(); i++) {
if (array.get(i).getHeight() < 100) {
array.remove(i);
}
}
此代码无效! 如果你照看元素,那么矩形就会减少,但仍有超过100的矩形!
答案 0 :(得分:4)
Java 8解决方案怎么样?
array = array.stream().filter(r -> r.getHeight() <= 100).collect(Collectors.toList());
它返回高List
的新Rectangle
100
个dic = {'a': [4, 1, 3, 1], 'b': [4, 2, 1, 4], 'c': [5, 7, 9, 1]}
df = pd.DataFrame(dic)
。
答案 1 :(得分:4)
除了>
vs <
的简单拼写错误:
如果向前迭代列表并按索引删除元素,如果有两个符合删除条件的相邻项目,则会遗漏元素。
或者:
反向迭代列表:
for (int i = array.size() - 1; i >= 0; i--) {
删除项目后减少i
(通常不推荐,因为在循环体中更改for循环的迭代变量会让人感到困惑):
array.remove(i--);
使用Iterator
:
Iterator<Rectangle> it = array.iterator();
while (it.hasNext()) {
Rectangle r = it.next();
if (some condition) {
it.remove();
}
}
答案 2 :(得分:2)
纠正你的if条件如下
ArrayList <Rectangle> array = new ArrayList <Rectangle> ();
for (int i = 0; i<array.size(); i++) {
if (array.get(i).getHeight() > 100) {
array.remove(i--); // "--" means go back one step
}
}
答案 3 :(得分:-1)
你可以这样做,
ArrayList <Rectangle> array = new ArrayList <Rectangle> ();
for (Rectangle rec : arrays) {
if (rec.getHeight() > 100) {
array.remove(i);
}
}