Performance 如何从arraylist中删除某些项而无需循环并降低时间复杂度?
我有一个包含100000个对象的数组列表。我想删除一些具有特定ID的对象。我使用for循环在ArrayList中搜索并删除每个对象。因此,这是非常耗时的。有没有可能做到这一点而没有任何循环Performance 如何从arraylist中删除某些项而无需循环并降低时间复杂度?,performance,loops,arraylist,java-8,time-complexity,Performance,Loops,Arraylist,Java 8,Time Complexity,我有一个包含100000个对象的数组列表。我想删除一些具有特定ID的对象。我使用for循环在ArrayList中搜索并删除每个对象。因此,这是非常耗时的。有没有可能做到这一点而没有任何循环 List<Type> list = ... list.removeIf(item -> item.getId() == something); 顾名思义,removeIf会删除满足谓词的所有元素。因为我不知道Lakh类的结构,所以我只能提供一个使用字符串的示例: 请不要担心这也会在引擎盖下
List<Type> list = ...
list.removeIf(item -> item.getId() == something);
顾名思义,removeIf会删除满足谓词的所有元素。因为我不知道Lakh类的结构,所以我只能提供一个使用字符串的示例: 请不要担心这也会在引擎盖下使用一个环。更准确地说: while循环中的迭代器
您可以使用如下所示的删除方法:
List<String> nameList = ArrayList<String>();
nameList.add("Sam");
nameList.add("Sarah");
//Remove by index
nameList.remove(0);
//Remove by value
nameList.remove("Sarah");
到目前为止,您尝试了什么?您正在运行什么Java版本?Java 8或更高版本?@deHaar,我已经在Android上试用了Java 8,这是否具有更少的时间复杂性?@AkhilAravind No@Seelenvirtuose okayTime复杂性是线性的。恐怕没有比这更好的了。谢谢。这是我一直在寻找的答案删除只删除第一次出现的object@Adrian谢谢,我无法从10万个对象的上下文中提取,但它开始有意义了-removeIf的默认实现使用一个基于迭代器的循环,但是ArrayList用一个更适合ArrayList的实现覆盖了这个方法。
List<String> nameList = ArrayList<String>();
nameList.add("Sam");
nameList.add("Sarah");
//Remove by index
nameList.remove(0);
//Remove by value
nameList.remove("Sarah");