Java Stream toArray()方法将Stream转为数组

后端 潘老师 6个月前 (10-27) 150 ℃ (0) 扫码查看

学习使用Stream的toArray() API将Stream转换为数组。在本教程中,我们将通过多个示例来看如何将Stream的元素收集到数组中。

1.Stream的toArray()方法

toArray()方法返回包含给定Stream元素的数组。这是一种终止操作,返回一个数组。

Object[] toArray()
<T> T[]  toArray(IntFunction<T[]> generator)

toArray()方法是一种重载方法。第二种方法使用生成函数来分配返回的数组。

生成函数采用一个整数,即所需数组的大小,并产生一个所需大小的数组。

2.Stream的toArray()示例

示例1:将Stream of String转换为String数组

在给定的示例中,我们使用toArray() API将Stream转换为数组。

Stream<String> tokenStream = Arrays.asList("A", "B", "C", "D").stream();  //stream
     
String[] tokenArray = tokenStream.toArray(String[]::new);   //array
 
System.out.println(Arrays.toString(tokenArray));  //[A, B, C, D]

示例2:将无限Stream转换为数组

要将无限Stream转换为数组,我们必须限制Stream以获取有限数量的元素。

1)转换为int数组:

IntStream infiniteNumberStream = IntStream.iterate(1, i -> i+1);
     
int[] intArray = infiniteNumberStream.limit(10)
      .toArray();
 
System.out.println(Arrays.toString(intArray));  //[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

2)转换为Integer包装类数组

IntStream infiniteNumberStream = IntStream.iterate(1, i -> i+1);
 
Integer[] integerArray = infiniteNumberStream.limit(10)
          .boxed()
          .toArray(Integer[]::new);
 
System.out.println(Arrays.toString(integerArray));//[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

示例3:Stream过滤和收集到数组

有时我们需要查找Stream中的特定项,然后仅将这些元素添加到数组中。在这里,我们可以使用Stream.filter()方法传递一个Predicate,它将返回仅匹配预设条件的元素。

public class Main 
{
  public static void main(String[] args) 
  {
    List<Employee> employeeList = new ArrayList<>(Arrays.asList(
              new Employee(1, "A", 100),
              new Employee(2, "B", 200),
              new Employee(3, "C", 300),
              new Employee(4, "D", 400),
              new Employee(5, "E", 500),
              new Employee(6, "F", 600)));
     
    Employee[] employeesArray = employeeList.stream()
            .filter(e -> e.getSalary() < 400)
            .toArray(Employee[]::new);
     
    System.out.println(Arrays.toString(employeesArray));
  }
}

程序输出:

[Employee [id=1, name=A, salary=100.0], 
Employee [id=2, name=B, salary=200.0], 
Employee [id=3, name=C, salary=300.0]]

3.结论

我们可以使用Stream的toArray()函数以多种方式将Stream元素收集到数组中。所有用例都可以使用此功能。


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/back/10435.html
喜欢 (0)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】