gpt4 book ai didi

Java集合List与Array的相互转换

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Java集合List与Array的相互转换由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

List 转 Array 。

使用集合转数组的方法,必须使用集合的 toArray(T[] array),传入的是类型完全一样的数组,大小就是 list.size()。 反例:直接使用 toArray 无参方法存在问题,此方法返回值只能是 Object[] 类,若强转其它类型数组将出现 ClassCastException 错误.

反例:

?
1
2
3
4
5
6
7
8
public static void main(String[] args) throws Exception {
   List<String> list = new ArrayList<String>();
   list.add( "A" );
   list.add( "B" );
   list.add( "C" );
 
   String[] array = (String[])list.toArray();
}

异常:

  。

复制代码 代码如下:

Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;

  。

  。

正例:

?
1
2
3
4
5
6
7
8
9
10
public static void main(String[] args) throws Exception {
   List<String> list = new ArrayList<String>();
   list.add( "A" );
   list.add( "B" );
   list.add( "C" );
 
   // 使用泛型,无需显式类型转换
   String[] array = list.toArray( new String[list.size()]);
   System.out.println(array[ 0 ]);
}

Array 转 List 。

使用工具类 Arrays.asList() 把数组转换成集合时,不能使用其修改集合相关的方法,它的 add/remove/clear 方法会抛出 UnsupportedOperationException 异常.

说明:asList 的返回对象是一个 Arrays 内部类,并没有实现集合的修改方法。Arrays.asList体现的是适配器模式,只是转换接口,后台的数据仍是数组.

?
1
2
String[] str = new String[] { "a" , "b" };
List list = Arrays.asList(str);

第一种情况:list.add("c"); 运行时异常.

?
1
Exception in thread "main" java.lang.UnsupportedOperationException

第二种情况:list[0]= "gujin"; 那么 list.get(0) 也会随之修改.

说明:

?
1
2
3
4
5
@SafeVarargs
@SuppressWarnings ( "varargs" )
public static <T> List<T> asList(T... a) {
   return new ArrayList<>(a);
}

这个 ArrayList 并不是  java.util 中的 ArrayList,而是一个内部的 ArrayList,不提供 add 等修改操作.

?
1
2
3
4
5
private static class ArrayList<E> extends AbstractList<E>
   implements RandomAccess, java.io.Serializable
{
   private static final long serialVersionUID = -2764017481108945198L;
   private final E[] a;

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.

原文链接:http://www.jianshu.com/p/ce3b6355f7ee 。

最后此篇关于Java集合List与Array的相互转换的文章就讲到这里了,如果你想了解更多关于Java集合List与Array的相互转换的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com