Arrays.stream().boxed()的使用

简介: Arrays.stream().boxed()的使用

Arrays.stream().boxed()的使用


a53fa7633514475fa766316fab7a2e3e.jpeg


0. 写在前面

文章翻译自以下本文的最后链接


1. Arrays.stream()的使用

算法:

1. 获取要转换的数组。

2. 使用Arrays.stream()方法将数组转换为流,并将数组作为参数传给对方。

3. 返回形成的流


代码:

  • 用Java程序来转换数组到流
importjava.util.*;
importjava.util.stream.*;
classGFG {
// 通用函数,用于转换// 从一个数组转换到流publicstatic<T>Stream<T>convertArrayToStream(Tarray[]) {
// 返回转换流returnArrays.stream(array);
    }
publicstaticvoidmain(Stringargs[]) {
// Create an ArrayStringarray[] = { "Geeks", "forGeeks", "A Computer Portal" };
// 打印数组System.out.println("Array: "+Arrays.toString(array));
// 数组转换为流Stream<String>stream=convertArrayToStream(array);
// 打印流System.out.println("Stream: "+Arrays.toString(stream.toArray()));
    }
}


输出结果:

Array: [Geeks, forGeeks, A computer Portal]
Stream: [Geeks, forGeeks, A computer Portal]


2. boxed()的使用

有时需要将原始类型转换为盒式类型。

boxed()方法实现

publicfinalStream<Integer>boxed() {
returnmapToObj(Integer::valueOf);
}

boxed()的作用就是将基本(原始)类型的stream转成了包装(boxed)类型的Stream

例如:上述方法实现的是int类型的stream转成了Integer类型的Stream


在原始类型「primitives」和盒式类型「boxed」之间转换数组


  • 为了转换数组,可以使用流(在Java 8及以上版本)。
// Java SE 8int[] primitiveArray= {1, 2, 3, 4};
Integer[] boxedArray=Arrays.stream(primitiveArray).boxed().toArray(Integer[]::new);


  • 对于较低的版本,可以通过迭代原始数组并明确地将其复制到 盒式数组
// Java SE 8int[] primitiveArray= {1, 2, 3, 4};
Integer[] boxedArray=newInteger[primitiveArray.length];
for (inti=0; i<primitiveArray.length; ++i) {
boxedArray[i] =primitiveArray[i]; // Each element is autoboxed here}


  • 同样地,一个盒式数组可以被转换为其原始对应的数组。
// Java SE 8Integer[] boxedArray= {1, 2, 3, 4};
int[] primitiveArray=Arrays.stream(boxedArray).mapToInt(Integer::intValue).toArray();
// Java SE 8Integer[] boxedArray= {1, 2, 3, 4};
int[] primitiveArray=newint[boxedArray.length];
for (inti=0; i<boxedArray.length; ++i) {
primitiveArray[i] =boxedArray[i]; // Each element is outboxed here}


3. 参考

https://www.geeksforgeeks.org/program-to-convert-boxed-array-to-stream-in-java/

https://riptutorial.com/java/example/17621/converting-arrays-between-primitives-and-boxed-types
目录
相关文章
|
10天前
|
Java
Java8 Stream Collectors groupingBy使用
Java8 Stream Collectors groupingBy使用
|
6月前
|
自然语言处理 Java
Java8 stream collect Map集合
Java8 stream collect Map集合
22 0
|
8月前
|
Java 编译器 索引
深入解析Java中的数组复制:System.arraycopy、Arrays.copyOf和Arrays.copyOfRange
当涉及到在Java中处理数组时,有许多方法可供选择,其中一些包括`System.arraycopy()`、`Arrays.copyOf()`和`Arrays.copyOfRange()`。这些方法允许您在不同的数组之间复制数据,但它们之间有一些细微的差异。在本篇博客文章中,我们将深入探讨这些方法,以便您了解何时使用它们以及如何正确使用它们。
257 1
|
8月前
Stream方法使用-map与flatMap讲解
Stream方法使用-map与flatMap讲解
49 1
|
Java
Java: Java8中stream Collectors.groupingBy将List转为分组Map
Java: Java8中stream Collectors.groupingBy将List转为分组Map
212 0
|
XML SQL Java
Java 中 List 集合 Stream 流详解
Java 中 List 集合 Stream 流详解
582 0
|
C++ 存储 Java
Arrays.copyOf()与System.arraycopy()的区别
Arrays.copyOf()与System.arraycopy()的区别
142 0
Arrays.copyOf()与System.arraycopy()的区别
|
数据库 容器
使用Stream流对集合排序
有一些业务需要对集合按照一些规则进行排序,本篇介绍如何用Stream()对集合进行升序或者降序操作。之前只有接触过使用数据库进行排序,有一些情况需要不同的排序结果,如果进行多次查询会多次操作数据库,所以有些地方使用流对集合操作是更好的选择。Stream 流 -> 调用 sorted 方法 -> 方法内传入对比规则,用容器对象的属性作为入参作为排序依据,默认升序,需要倒叙的话后面调用.reversed() 方法。
574 0
使用Stream流对集合排序