微软做网站软件,中山网站建设优化,怎样做公司的网站建设,php 读取网站文件文章目录 List - Array1. 调用toArray()方法直接返回一个Object[]数组#xff1a;2. 给toArray(T[])传入一个类型相同的Array#xff0c;List内部自动把元素复制到传入的Array中#xff1a;3. 通过List接口定义的T[] toArray(IntFunctionT[] generator)方法 Array1. 调用toArray()方法直接返回一个Object[]数组2. 给toArray(T[])传入一个类型相同的ArrayList内部自动把元素复制到传入的Array中3. 通过List接口定义的T[] toArray(IntFunctionT[] generator)方法 Array- List List - Array
1. 调用toArray()方法直接返回一个Object[]数组
import java.util.List;
public class Main {public static void main(String[] args) {ListString list List.of(apple, pear, banana);Object[] array list.toArray();for (Object s : array) {System.out.println(s);}}
}这种方法会丢失类型信息所以实际应用很少。
2. 给toArray(T[])传入一个类型相同的ArrayList内部自动把元素复制到传入的Array中
import java.util.List;
public class Main {public static void main(String[] args) {ListInteger list List.of(12, 34, 56);Integer[] array list.toArray(new Integer[3]);for (Integer n : array) {System.out.println(n);}}
}注意到这个toArray(T[])方法的泛型参数并不是List接口定义的泛型参数所以我们实际上可以传入其他类型的数组例如我们传入Number类型的数组返回的仍然是Number类型
import java.util.List;
public class Main {public static void main(String[] args) {ListInteger list List.of(12, 34, 56);Number[] array list.toArray(new Number[3]);for (Number n : array) {System.out.println(n);}}
}但是如果我们传入类型不匹配的数组例如String[]类型的数组由于List的元素是Integer所以无法放入String数组这个方法会抛出ArrayStoreException。
如果我们传入的数组大小和List实际的元素个数不一致怎么办根据List接口的文档我们可以知道
如果传入的数组不够大那么List内部会创建一个新的刚好够大的数组填充后返回如果传入的数组比List元素还要多那么填充完元素后剩下的数组元素一律填充null。
实际上最常用的是传入一个“恰好”大小的数组
Integer[] array list.toArray(new Integer[list.size()]);3. 通过List接口定义的T[] toArray(IntFunctionT[] generator)方法
Integer[] array list.toArray(Integer[]::new);这种函数式写法我们会在后续讲到。
Array- List
通过List.of(T…)方法最简单
Integer[] array { 1, 2, 3 };
ListInteger list List.of(array);对于JDK 11之前的版本可以使用Arrays.asList(T…)方法把数组转换成List。
要注意的是返回的List不一定就是ArrayList或者LinkedList因为List只是一个接口如果我们调用List.of()它返回的是一个只读List
import java.util.List;
public class Main {public static void main(String[] args) {ListInteger list List.of(12, 34, 56);list.add(999); // UnsupportedOperationException}
}对只读List调用add()、remove()方法会抛出UnsupportedOperationException。