不使用 previous 的 ListIterator 解决方案

ListIterator solution without using previous

假设我们有这段代码:

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());
}

有没有不使用previous的替代方案?

myIntegers 列表可以浏览增强... 不需要迭代器

    for (Integer integer : myIntegers) {
        if(...some code...){
            selectedValues.add(myIntegersIt.next());
          }
    }

既然你要从列表中删除所有数据,如果你使用 ,这是一个简单的操作。

流过你的数组,用逻辑条件过滤想要的值,然后 return 以 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();