J J*_*J J 1 lambda list java-8 java-stream
看到问题的评论。有选择地删除N个元素(条件是列表元素匹配“删除”)
List<String> mylist = new ArrayList<>();
mylist.add("remove");
mylist.add("all");
mylist.add("remove");
mylist.add("remove");
mylist.add("good");
mylist.add("remove");
// Remove first X "remove".
// if X is 2, then result list should be "all, remove, good, remove"
// Use java 8 features only, possibly single line code.
// Please don't answer with looping, iterating, if conditions etc.
// Answer should use JDK 8 new features.
Run Code Online (Sandbox Code Playgroud)
这个怎么样:
List<String> filter(List<String> mylist, int x){
AtomicInteger index = new AtomicInteger(0);
mylist.removeIf(p -> p.equals("remove") && index.getAndIncrement() < x);
return myList;
}
Run Code Online (Sandbox Code Playgroud)
当x = 0时,它打印:
[删除,全部,删除,删除,良好,删除]
当x = 1时,它打印:
[全部,删除,删除,好,删除]
x = 2时,它打印:
[全部,删除,好,删除]
x = 3时,它打印:
[全部,好,删除]