我创建了一个ArrayList:
ArrayList<Fruit> fruit = new ArrayList<Fruit>();
并添加了元素:
fruit.add(new Fruit("apple", "red");
fruit.add(new Fruit("orange", "orange");
fruit.add(new Fruit("strawberry", "red");
我想删除所有红色水果的实例。有人可以帮我弄明白怎么做吗?提前谢谢。
答案 0 :(得分:2)
for (Iterator<Fruit> iter = list.listIterator(); iter.hasNext(); ) {
Fruit f = iter.next();
if (f.getColor().equalsIgnoreCase("red")) {
iter.remove();
}
}
假设您在Fruit类中有一个用于色域的getter方法。
答案 1 :(得分:1)
在Java 5.0+中,你可以做到
for(Iterator<Fruit> iter = fruit.iterator(); iter.hasNext(); )
if (iter.next().getColour().equals("red"))
iter.remove();
在Java 8中,您可以使用
创建一个新列表List<Fruit> nonRed = fruit.stream()
.filter(f -> !f.getColour().equals("red"))
.collect(Collectors.toList());
答案 2 :(得分:1)
除了其他Java 8解决方案之外,removeIf
界面中还有就地Collection
。
List<Fruit> fruit = new ArrayList<>();
fruit.add(new Fruit("apple", "red"));
fruit.add(new Fruit("orange", "orange"));
fruit.add(new Fruit("strawberry", "red"));
System.out.println(fruit);
fruit.removeIf(f -> f.color.equals("red"));
System.out.println(fruit);
答案 3 :(得分:0)
常用方法(语法)如下所示。
for (Iterator<Object> it = data.iterator(); it.hasNext();) {
if (it.next().getCaption().contains("_Hardi")) {
it.remove();
}
}
答案 4 :(得分:0)
在Java 8中,您可以这样做:
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class Learning {
public static class Fruit {
public final String name;
public final String colour;
public Fruit(String name, String colour) {
this.name = name;
this.colour = colour;
}
}
@Test
public void x() {
ArrayList<Fruit> fruit = new ArrayList<Fruit>();
fruit.add(new Fruit("apple", "red"));
fruit.add(new Fruit("orange", "orange"));
fruit.add(new Fruit("strawberry", "red"));
List<Fruit> notRed =
fruit
.stream()
.filter(f -> !f.colour.equals("red"))
.collect(Collectors.<Fruit>toList());
}
}