慕桂英3389331
众所周知,基元类型在java中不是对象,对于它们,类中有重载方法。假设这里只是考虑.如果我们通过,那么被调用并返回对象。如果你去看类,那么你会发现只有一个方法,它不接受任何参数。stream()Arraysintint[]stream(int[] array)IntStreamIntStreamtoArray所以,我们不能做.toArray(int[]::new)int[] in1 = {0, 0, 2, 0, 3};
int[] in2 = Arrays.stream(in1).filter(x -> x != 0).toArray();但是对于任何引用类型数组,我们可以转换为特定类型。例如String[] str2 = {"a","b",null,"c"};
String[] strArr = Arrays.stream(str2).filter(i -> !=null).toArray(String[]::new); for (String string : strArr) {
System.out.println(string);
}在引用类型的情况下,泛型方法从类中被调用并产生,现在接口有两个重载。如果我们使用streamArraysStream<T>StreamtoArray()toArray()然后屈服,在这种情况下我们需要种姓。Object[]toArray(IntFunction<A[]> generator)然后给我们,其中是任何引用类型。A[]A请参阅下面的示例package test;import java.util.Arrays;public class EliminateZeroFromIntArray {public static void main(String[] args) { int[] in1 = {0, 0, 2, 0, 3}; int[] in2 = Arrays.stream(in1).filter(x -> x != 0).toArray(); for (int i : in2) {
System.out.println(i);
}
String[] str = {"a","b",null,"c"};
Object[] array = Arrays.stream(str).filter(i -> i !=null).toArray(); for (Object object : array) {
System.out.println((String)object);
}
String[] str2 = {"a","b",null,"c"};
String[] strArr = Arrays.stream(str2).filter(i -> i !=null).toArray(String[]::new); for (String string : strArr) {
System.out.println(string);
}
}}