Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 如何从arraylist中删除某些项而无需循环并降低时间复杂度?_Performance_Loops_Arraylist_Java 8_Time Complexity - Fatal编程技术网

Performance 如何从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类的结构,所以我只能提供一个使用字符串的示例: 请不要担心这也会在引擎盖下

我有一个包含100000个对象的数组列表。我想删除一些具有特定ID的对象。我使用for循环在ArrayList中搜索并删除每个对象。因此,这是非常耗时的。有没有可能做到这一点而没有任何循环

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");