Java中List集合转换为数组的那些小事
Java中List集合转换为数组的那些小事
- 准备 List 集合、存放数据内容
- 将 List 集合转换为 数组 并打印输出
// 指定泛型的 ArrayList 集合
List list = new ArrayList<>();
// 增加元素内容
list.add("王者荣耀");
list.add("和平精英");
list.add("英雄联盟");
list.add("穿越火线");
list.add("梦三国");
// 打印集合数据
System.out.println("list = " + list); // list = [王者荣耀, 和平精英, 英雄联盟, 穿越火线, 梦三国]
System.out.println("------------------------------------------------------------");
// 不指定参数的转换
Object[] objects = list.toArray();
for (Object object : objects) {
// 判断类型
if (object instanceof String) {
// 强转 输出 内容
System.out.println((String) object);
}
}
System.out.println("------------------------------------------------------------");
// 指定转换数据类型 和 准备好转换空间
// 并没有强转
String[] toArray = list.toArray(new String[list.size()]);
// 输出打印 数组数据
System.out.println("toArray = " + Arrays.toString(toArray));
// toArray = [王者荣耀, 和平精英, 英雄联盟, 穿越火线, 梦三国]
查看 ArrayList 源码中的 toArray() 的方法
@SuppressWarnings("unchecked")
public T[] toArray(T[] a) {
if (a.length < size)
// 底层依旧在强转
return (T[]) Arrays.copyOf(elementData, size, a.getClass());
System.arraycopy(elementData, 0, a, 0, size);
if (a.length > size)
a[size] = null;
return a;
}