如何使用Java8流?
我想知道如何使用如何使用Java8流?,java,foreach,java-8,java-stream,Java,Foreach,Java 8,Java Stream,我想知道如何使用Java8流,以及如何使用不同类型的可用流操作。 例如,我编写了这部分代码: ArrayList<State> toBeRemoved = new ArrayList<>(); for (State s : newStates) if (path.contains(s)) // path is a stack of State toBeRemoved.add(s); for (State s : toBeRemoved)
Java8
流,以及如何使用不同类型的可用流操作。
例如,我编写了这部分代码:
ArrayList<State> toBeRemoved = new ArrayList<>();
for (State s : newStates)
if (path.contains(s)) // path is a stack of State
toBeRemoved.add(s);
for (State s : toBeRemoved)
newStates.remove(s);
ArrayList toBeRemoved=new ArrayList();
适用于(州:新闻州)
if(path.contains(s))//path是一个状态堆栈
待删除。添加(s);
对于(状态s:toBeRemoved)
新闻状态。删除;
我想使用
Java8流api调用重写它。如何操作?在这种情况下,您只需生成一个只包含应保留状态的输出列表,并将该列表分配给newStates
变量:
newStates = newStates.stream()
.filter(s -> !path.contains(s))
.collect(Collectors.toList());
筛选器仅保留path.contains.
返回false的状态
当然,如果newStates
最初初始化为某些“旧状态”列表的副本,您可以跳过初始化步骤,将原始“旧状态”列表用作输入。此处不需要流,您可以使用:
或者,如果路径
是集合
:
newStates.removeAll(path);
非常感谢。这是可行的,但我需要知道如何使用这个api。请写一个简单的托图里亚尔什么的。不仅仅是这个案子。谢谢。@rasooll请写一个简单的toturial
。我不这么认为。谷歌“Java8Streams教程”怎么样?试过了。没发现什么好东西。现在,我投票支持你的答案。我会等几个小时,如果没有人回答得比你好,那么你的回答就会被接受。再次感谢你,伙计。:)@Rasooll这么说你在谷歌上搜索了“Java8Streams”,却没有发现什么好东西?关于这个话题,有很多很棒的帖子和文章。Oracle有关于这个主题的Java教程。streams包上的API文档非常好,更不用说越来越多关于这个主题的优秀书籍了。我认为你需要的帮助是提高你的调查技能。@EdwinDalorzo好的。我会更努力的。谢谢newStates.removeAll(路径)代码>…@Holger确实是;-)我没有注意到path(可能)是一个集合。我很惊讶他们添加了这个removeIf
default方法。它看起来非常具体。流在不可变的数据结构(或者更准确地说,您将其视为不可变的数据结构)上工作得最好。如果您试图修改现有的数据结构,就像您在这里使用的newStates
,您可能不想使用流。
newStates.removeAll(path);