::双冒号:把方法当做参数传到stream内部,使stream的每个元素都传入到该方法里面执行一下
如果转化的是存Integer类型数据的集合,以下的所有intValue
都可以用valueOf
代替
但如果是存Long或Double等数据类型的数据须用对应类型的intValue()
方法
intValue()
是java.lang.Number类的方法。Java中所有的数值类都继承它。也就是说Integer
,Double
,Long
等都有intValue()
方法
- Integer 用stream流转化为 int数组
//Integer[] 转换为 int[]
Integer[] arr = new Integer[10];
int[] intArr = Arrays.stream(arr).mapToInt(Integer::intValue).toArray();
- hashset转化为Integer数组
Set<Integer> set = new HashSet<>();
Integer[] arr = new Integer[set.size()];
set.toArray(arr);
- hashset用stream流转化为int数组
Set<Integer> set = new HashSet<>();
int[] arr = set.stream().mapToInt(Integer::intValue).toArray();
- ArrayList转化为Integer数组
List<Integer> list = new ArrayList<>();
Integer[] arr = new Integer[list.size()];
list.toArray(arr);
- ArrayList用stream流转化为int数组
List<Integer> list = new ArrayList<>();
int[] arr = list.stream().mapToInt(Integer::intValue).toArray();
不难发现: set 或 list 转化为 Integer 数组或者 int 数组的方式是一样的