假设我们有这段代码:
LinkedList<Integer> myIntegers = new LinkedList<Integer>();
ListIterator<Integer> myIntegersIt = myIntegers.listIterator
myIntegers.add(1);
myIntegers.add(2);
myIntegers.add(3);
myIntegers.add(4);
myIntegers.add(5);
LinkedList<Integer> selectedValues = new LinkedList<Integer>();
while(myIntegersIt.hasNext()){
if(...some code...){
selectedValues.add(myIntegersIt.next());
}
myIntegers.remove(myIntegersIt.previous());
}
有没有使用以前的替代解决方案?
答案 0 :(得分:0)
myIntegers 列表可以使用增强版进行浏览... 不需要迭代器
for (Integer integer : myIntegers) {
if(...some code...){
selectedValues.add(myIntegersIt.next());
}
}
答案 1 :(得分:0)
由于您要删除列表中的所有数据,如果您使用的是java-8,这是一项简单的操作。
对数组进行流式处理,使用逻辑条件过滤所需的值,并以List
selectedValues = myIntegers.stream().filter(x -> /*sometest*/).collect(Collectors.toList());
myIntegers.clear();
使用List#removeIf(Predicate)
也是一种很好的方法。
myIntegers.removeIf(x -> //testToRemove);
selectedValues = new LinkedList<>(myIntegers);
myIntegers.clear();