在Java中过滤列表的最简单方法是什么?

时间:2015-10-24 12:28:29

标签: java

目前,当我想要过滤列表时,我会使用迭代其元素并将符合我要求的元素复制到新列表,但这样我就使用了O(2N)的空间复杂度。有没有更有效的方法呢?

2 个答案:

答案 0 :(得分:1)

如果您使用的是Java 8,则只需使用myList.stream()。filter(); 否则你可以采用Filter Pattern

<input type="button" value="Add Word" data-bind="postJson : {token : '{{ csrf_token() }}', data : $root.wordToAdd }" /> 

答案 1 :(得分:0)

如果您需要保留旧列表以及构建新列表,您将始终具有O(2N)空间复杂度。

如果您不需要执行深层复制,请在新列表中存储引用。也就是说,在你的循环中,而不是newlist.add(item.deepClone())之类的东西,只需newlist.add(item)

如果您不需要保留旧列表,则可能会丢弃符合您要求的元素。例如。在你的循环内,而不是if (isAKeeper(item)) newlist.add(...),使用if (!isAKeeper(item)) oldList.remove(item)