在流中使用过滤器

时间:2017-01-30 08:45:32

标签: java java-8 java-stream

String[] arr={"121","4545","45456464"};
Arrays.stream(arr).filter(s->s.length()>4).toArray(String[]::new);

在上面的代码段中,有人可以告诉我 toArray(String[]::new)发生了什么吗

3 个答案:

答案 0 :(得分:5)

$data = array( 'Fname' => $this->input->post('fname'), 'Lname' => $this->input->post('lname'), 'Gender' => $this->input->post('gender'), 'Address' => $this->input->post('address'), 'EmailAdd' => $this->input->post('emailadd'), 'username' => $this->input->post('username'), 'password' => $this->input->post('password') ); 实际上与String[]::new相同。 在将filter应用于Stream后,会创建一个与Stream.toArray元素数量相同的新size -> new String[size]。另请参见{{3}}

的javadoc

答案 1 :(得分:3)

toArray正在创建一个String[],其中包含filter的结果,在您的情况下,所有字符串的长度都大于4. filter返回{{1}所以你将它转换成一个数组。

打印过滤后的结果,而不是将其存储到数组中

Stream

答案 2 :(得分:1)

String[]::new是对String[]类型的新运算符的引用。它是Java-8语法。 toArray的{​​{1}}方法将Streams作为数组的生成器,其中将收集流的元素。它与写作相同:

IntFunction<A[]>