ListIterator解决方案,不使用以前的

时间:2016-05-09 20:03:57

标签: java list linked-list listiterator

假设我们有这段代码:

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

有没有使用以前的替代解决方案?

2 个答案:

答案 0 :(得分:0)

myIntegers 列表可以使用增强版进行浏览... 不需要迭代器

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

答案 1 :(得分:0)

由于您要删除列表中的所有数据,如果您使用的是,这是一项简单的操作。

对数组进行流式处理,使用逻辑条件过滤所需的值,并以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();