不使用 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());
}
}
既然你要从列表中删除所有数据,如果你使用 java-8,这是一个简单的操作。
流过你的数组,用逻辑条件过滤想要的值,然后 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();
假设我们有这段代码:
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());
}
}
既然你要从列表中删除所有数据,如果你使用 java-8,这是一个简单的操作。
流过你的数组,用逻辑条件过滤想要的值,然后 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();