网站设计与开发范本小程序制作简单教程
web/
2025/9/29 19:28:10/
文章来源:
网站设计与开发范本,小程序制作简单教程,商业网站建设案例视频,怎样用word做网站一、数组转List
方式一
通过 Arrays.asList(strArray) 方式#xff0c;将数组转换List#xff0c;但不能对List增删#xff0c;只能查改#xff0c;否则抛异常#xff0c;例子如下#xff1a;
public static void main(String[] args) {//创建一个字符串数组String[] …一、数组转List
方式一
通过 Arrays.asList(strArray) 方式将数组转换List但不能对List增删只能查改否则抛异常例子如下
public static void main(String[] args) {//创建一个字符串数组String[] strArray new String[]{a,b,c};//数组转化成ListListString strList Arrays.asList(strArray);System.out.println(转化后的ListstrList);//向List中添加内容strList.add(d);System.out.println(strList);
}输出结果
转化后的List[a, b, c]
Exception in thread main java.lang.UnsupportedOperationExceptionat java.util.AbstractList.add(AbstractList.java:148)at java.util.AbstractList.add(AbstractList.java:108)at com.example.container.d.TestList.main(TestList.java:16)为什么会抛异常呢
这是因为通过Arrays.asList(strArray)返回的对象是java.util.Arrays.ArrayList并非是java.util.ArrayList因为java.util.Arrays.ArrayList并没有add()、remove()方法所以调用add()方法会报错
方式二
既然java.util.Arrays.ArrayList和java.util.ArrayList不一样那么就将java.util.Arrays.ArrayList转为java.util.ArrayList方法如下
public static void main(String[] args) {//创建一个字符串数组String[] strArray new String[]{a,b,c};//通过构造方法将数组转化成ListListString strList new ArrayListString(Arrays.asList(strArray));System.out.println(转化后的ListstrList);//向List中添加内容strList.add(d);System.out.println(strList);
}输出结果
转化后的List[a, b, c]
[a, b, c, d]此时就没啥问题了。
方式三(推荐使用)
除了方式二以外还有一种方法通过Collections.addAll()进行操作也如下
public static void main(String[] args) {//创建一个字符串数组String[] strArray new String[]{a,b,c};//创建一个固定大小的ListListString strList new ArrayListString(strArray.length);//通过Collections类将数组转化成ListCollections.addAll(strList,strArray);System.out.println(转化后的ListstrList);//向List中添加内容strList.add(d);System.out.println(strList);
}输出结果
转化后的List[a, b, c]
[a, b, c, d]打开Collections.addAll底层源码如下
public static T boolean addAll(Collection? super T c, T... elements) {boolean result false;for (T element : elements)result | c.add(element);return result;
}其实就是遍历数组然后添加到集合中最高效的一种方法推荐使用
方式四(推荐使用)
使用Stream中的Collector收集器来转化需要jdk1.8支持内容如下
public static void main(String[] args) {//创建一个字符串数组String[] strArray new String[]{a,b,c};//转换后的List 属于 java.util.ArrayList 能进行正常的增删查操作ListString strList Stream.of(strArray).collect(Collectors.toList());System.out.println(转化后的ListstrList);//向List中添加内容strList.add(d);System.out.println(strList);
}输出结果
转化后的List[a, b, c]
[a, b, c, d]这种方式也比较推荐前提是jdk需要升级到1.8
二、List转数组
方式一
使用list.toArray不带参数的方法转化后的返回值类型为Object如果强转会抛异常
public static void main(String[] args) {//创建一个ListListString strList new ArrayListString();strList.add(a);strList.add(b);strList.add(c);//将List转换成数组Object[] objArray strList.toArray();System.out.println(objArray JSONArray.toJSON(objArray));//将List强制转换成StringString[] strArray (String[])strList.toArray();System.out.println(strArray JSONArray.toJSON(strArray));
}输出结果
objArray[a,b,c]
Exception in thread main java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;at com.example.container.d.Test2List.main(Test2List.java:24)
使用ArrayList.toArray不带参数的方法默认返回的是Object类型如果强制转换会抛java.lang.ClassCastException异常
ArrayList.toArray()源码如下
public Object[] toArray() {return Arrays.copyOf(elementData, size);
}方式二(推荐使用)
使用list.toArray带参数进行转换内容如下
public static void main(String[] args) {//创建一个ListListString strList new ArrayListString();strList.add(a);strList.add(b);strList.add(c);//将List转换成String指定返回数组类型并指定大小String[] strArray strList.toArray(new String[strList.size()]);System.out.println(strArray JSONArray.toJSON(strArray));
}输出结果
strArray[a,b,c]ArrayList.toArray()的带参方法在创建数组的时候指定数组的长度最好与集合size保持一致jdk 源码如下
public T T[] toArray(T[] a) {if (a.length size)// Make a new array of as runtime type, but my contents:return (T[]) Arrays.copyOf(elementData, size, a.getClass());System.arraycopy(elementData, 0, a, 0, size);if (a.length size)a[size] null;return a;
}三、写到最后
最近无意间获得一份阿里大佬写的技术笔记内容涵盖 Spring、Spring Boot/Cloud、Dubbo、JVM、集合、多线程、JPA、MyBatis、MySQL 等技术知识。需要的小伙伴可以点击如下链接获取资源地址技术资料笔记。 不会有人刷到这里还想白嫖吧点赞对我真的非常重要在线求赞。加个关注我会非常感激
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/84062.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!