Java – delete items from the list or add build new list?
•
Java
Usually, I have to iterate over an ArrayList and want to create a subset from it based on any condition
From a performance perspective: use iterator and iterator for the elements I want to delete Is remove () better, or should I add these elements to the new list?
for (Iterator<Object> it = list.iterator(); it.hasNext(); ) { Object item = it.next(); if (!conditionMatches(item)) { it.remove(); } }
or
List<Object> newList = new ArrayList<>(); for (Object item : list) { it (contitionMatches(item)) { newList.add(item); } }
Solution
Option 1 does not apply to read-only lists, such as arrays The list returned by aslist
In addition, when the list is long, deleting from the ArrayList is a big cost, because most of the backup arrays must be copied
Option 2 applies to all lists
This is also the pattern we encourage to use with streams:
List<String> l = Arrays.asList("A","B","C"); List<String> filtered = l.stream() .filter(s -> s.equals("A")) .collect(Collectors.toList());
With all due respect – use this one The savings in option 1 are illusory
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码