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;
}