listiterator解决方案,而不使用以前的

8fsztsew  于 2021-07-03  发布在  Java
关注(0)|答案(2)|浏览(241)

假设我们有这样的代码:

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

有没有不使用前一种方法的替代方案?

bkhjykvo

bkhjykvo1#

因为无论如何都要从列表中删除所有数据,如果您使用的是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();

oaxa6hgo

oaxa6hgo2#

我的整数列表可以浏览与增强为。。。不需要迭代器

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

相关问题