在Java中将数组转换为列表的方式有哪些?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
Java是什么
Java是一门面向对象编程语言,可以编写桌面应用程序,网络应用程序,分布式系统和嵌入式系统应用程序。
<强>一。最常见方式(未必最佳)强>
通过<代码> arrays . aslist (strArray) 代码>方式,将数组转换列表后,不能对增列表删,只能查改,否则抛异常。
关键代码:<代码>列表列表=arrays . aslist (strArray); 代码>
private void testArrayCastToListError (), { String[],才能strArray =, new 字符串[2]; List 才能;List =, arrays . aslist (strArray);//对才能转换后的列表插入一条数据 list.add才能(“1“); System.out.println才能(列表); 以前,}>执行结果:
异常在线程“main"java.lang.UnsupportedOperationException
引用>
,,,java.util.AbstractList.add (AbstractList.java: 148)
,,,java.util.AbstractList.add (AbstractList.java: 108)
,,,在com.darwin.junit.Calculator.testArrayCastToList(可:19)
,,,com.darwin.junit.Calculator.main(可:44)程序在<代码> list.add(“1”) 代码>处,抛出异常:UnsupportedOperationException。方式
<强>原因解析:
强><代码> arrays . aslist (strArray) 代码>返回值是<代码> java.util.Arrays> 代码类中一个私有静态内部类<代码> java.util.Arrays。ArrayList> 代码,它并非<代码> java.util.ArrayList 代码> <代码> java.util.Arrays类。ArrayList> 代码类具有<代码>设置()代码>,<代码>()代码>,<代码>包含()代码>等方法,但是不具有添加<代码>()代码>添加或删除<代码>删除()代码>方法,所以调用<代码> add() 代码>方法会报错。
使用场景:<代码> arrays . aslist (strArray) 代码>方式仅能用在将数组转换为列表后,不需要增删其中的值,仅作为数据源读取使用。
<强>二。数组转为列表后,支持增删改查的方式强>
通过ArrayList的构造器,将<代码> arrays . aslist (strArray) 代码>的返回值由<代码> java.util.Arrays.ArrayList> 代码转为<代码> java.util。ArrayList 代码> .
关键代码:<代码> ArrayList
列表=new ArrayList (arrays . aslist (strArray)); 代码> private void testArrayCastToListRight (), { String[],才能strArray =, new 字符串[2]; ArrayList<才能;String>, list =, new ArrayList(arrays . aslist (strArray)),; list.add才能(“1“); System.out.println才能(列表); 以前,}> 执行结果:成功追加一个元素“1”。
[空,空,1]
引用>使用场景:需要在将数组转换为列表后,对列表进行增删改查操作,在列表的数据量不大的情况下,可以使用。
<强>三。通过集合工具类Collections.addAll()方法(最高效)强>
通过<代码>集合。addAll (arrayList, strArray) 代码>方式转换,根据数组的长度创建一个长度相同的列表,然后通过<代码> Collections.addAll() 代码>方法,将数组中的元素转为二进制,然后添加到列表中,这是最高效的方法。
关键代码:
ArrayList<, String>, arrayList =, new ArrayList(strArray.length); Collections.addAll (arrayList, strArray); 测试:
private void testArrayCastToListEfficient () { String[],才能strArray =, new 字符串[2]; ,,ArrayList, arrayList =, new ArrayList (strArray.length); Collections.addAll才能(arrayList, strArray); arrayList.add才能(“1“); System.out.println才能(arrayList); 以前,}> 执行结果:同样成功追加一个元素“1”。
[空,空,1]
引用>
使用场景:需要在将数组转换为列表后,对列表进行增删改查操作,在列表的数据量巨大的情况下,优先使用,可以提高操作速度。
<强>注:强>附上<代码> Collections.addAll() 代码>方法源码:
public static & lt; T>, boolean addAll (Collection<?, super T>, c, T…,元素),{ boolean 才能;result =,假; for 才能;(T element :元素) ,,result |=, c.add(元素);//结果和c.add(元素)按位或运算,然后赋值给结果 return 才能;结果; ,}看完上述内容,你们掌握在Java中将数组转换为列表的方式有哪些的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!
在Java中将数组转换为列表的方式有哪些