Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Java8流?_Java_Foreach_Java 8_Java Stream - Fatal编程技术网

如何使用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);