从ArrayList中删除一些Object属性

我正在维护一个对象的ArrayList 。 我的对象结构是Id,名称,其他一些细节。 我需要删除一个具有一些id值的对象(10)并且我不想迭代列表。 这有什么解决方案吗?

使用Java-8 Collection#removeIf

 myList.removeIf(obj -> obj.id == 10); 

使用Java-7,您将不得不使用迭代器:

 for(Iterator iterator = myList.iterator(); iterator.hasNext(); ) { if(iterator.next().id == 10) iterator.remove(); } 

请注意,无论如何都需要列表迭代。 在Java-8 removeIf方法中,它只是在内部执行。

没有迭代器你就不能这样做,你应该为此做Hashmap。

 public class ObjectStructure{ private int Id; private String name; //and any data field you need } 

生成所有的setter和getter。

使用此课程

 Hashmap data = new HashMap<>(); 

您只能使用Integer键来添加和删除数据。

data.remove(10);

如果你真的不想迭代列表,你可以使用一个流,但我个人更喜欢Collection#removeIf如@TagirValeev建议

 myList = myList.stream() .filter(x -> x.id() != 10) .collect(Collectors.toList()); 

如果不以某种forms迭代列表,则无法从ArrayList中删除元素的所有实例。 ArrayList是一个数组,你需要检查数组中的每个元素,看它是否符合删除标准。 在基础层面,这需要循环…迭代元素。

另请注意,从arrays中删除单个元素时,需要移动在删除元素后面具有位置的所有元素。 平均而言,这将是数组元素的一半。

现在,您可以采用避免使用显式for循环的方式对这些操作进行编码,但无论您如何编写代码,迭代都将在幕后进行。