iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Java中将数组转换为List
  • 928
分享到

Java中将数组转换为List

2023-06-16 00:06:55 928人浏览 泡泡鱼
摘要

今天就跟大家聊聊有关Java中将数组转换为List,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一.最常见方式(未必最佳)通过 Arrays.asList(strArray) &nb

今天就跟大家聊聊有关Java中将数组转换为List,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

一.最常见方式(未必最佳)

通过 Arrays.asList(strArray)  方式,将数组转换List后,不能对List增删,只能查改,否则抛异常。

关键代码:List list = Arrays.asList(strArray);

private void testArrayCastToListError() {   String[] strArray = new String[2];   List list = Arrays.asList(strArray);   //对转换后的list插入一条数据   list.add("1");   System.out.println(list);  }

执行结果:

Exception in thread "main" java.lang.UnsupportedOperationException  at java.util.AbstractList.add(AbstractList.java:148)  at java.util.AbstractList.add(AbstractList.java:108)  at com.darwin.junit.Calculator.testArrayCastToList(Calculator.java:19)  at com.darwin.junit.Calculator.main(Calculator.java:44)

程序在list.add(“1”)处,抛出异常:UnsupportedOperationException。

原因解析:

Arrays.asList(strArray)返回值是java.util.Arrays类中一个私有静态内部类java.util.Arrays.ArrayList,它并非java.util.ArrayList类。java.util.Arrays.ArrayList类具有  set(),get(),contains()等方法,但是不具有添加add()或删除remove()方法,所以调用add()方法会报错。

使用场景:Arrays.asList(strArray)方式仅能用在将数组转换为List后,不需要增删其中的值,仅作为数据源读取使用。

二.数组转为List后,支持增删改查的方式

通过ArrayList的构造器,将Arrays.asList(strArray)的返回值由java.util.Arrays.ArrayList转为java.util.ArrayList。

关键代码:ArrayListlist = new ArrayList(Arrays.asList(strArray))  ;

private void testArrayCastToListRight() {   String[] strArray = new String[2];   ArrayList<String> list = new ArrayList<String>(Arrays.asList(strArray)) ;   list.add("1");   System.out.println(list);  }

执行结果:成功追加一个元素“1”。

[null, null, 1]

使用场景:需要在将数组转换为List后,对List进行增删改查操作,在List的数据量不大的情况下,可以使用。

三.通过集合工具类Collections.addAll()方法(最高效)

通过Collections.addAll(arrayList,  strArray)方式转换,根据数组的长度创建一个长度相同的List,然后通过Collections.addAll()方法,将数组中的元素转为二进制,然后添加到List中,这是最高效的方法。

关键代码:

ArrayList< String> arrayList = new ArrayList<String>(strArray.length); Collections.addAll(arrayList, strArray);

测试

private void testArrayCastToListEfficient(){   String[] strArray = new String[2];   ArrayList< String> arrayList = new ArrayList<String>(strArray.length);   Collections.addAll(arrayList, strArray);   arrayList.add("1");   System.out.println(arrayList);  }

执行结果:同样成功追加一个元素“1”。

[null, null, 1]

使用场景:需要在将数组转换为List后,对List进行增删改查操作,在List的数据量巨大的情况下,优先使用,可以提高操作速度。

注:附上Collections.addAll()方法源码

public static <T> boolean addAll(Collection<? super T> c, T... elements) {         boolean result = false;         for (T element : elements)             result |= c.add(element);//result和c.add(element)按位或运算,然后赋值给result         return result;     }

问题解答问题:数组类型如果是整型数组,转为List时,会报错?

答案: 在jdk1.8环境中测试,这三种转换方式是没有问题的。放心使用。对于Integer[]整型数组转List的方法和测试结果如下:

方式一:不支持增删

Integer[] intArray1 = new Integer[2]; List<Integer> list1 = Arrays.asList(intArray1); System.out.println(list1);

运行结果:

[null, null]

方式二:支持增删

Integer[] intArray2 = new Integer[2]; List<Integer> list2 = new ArrayList<Integer>(Arrays.asList(intArray2)) ; list2.add(2); System.out.println(list2);

运行结果:

[null, null, 2]

方式三:支持增删,且数据量大最高效

Integer[] intArray3 = new Integer[2]; List<Integer> list3 = new ArrayList<Integer>(intArray3.length); Collections.addAll(list3, intArray3); list3.add(3); System.out.println(list3);

运行结果:

[null, null, 3]

综上,整型Integer[]数组转List的正确方式应该是这样的。

易错点:可能出现的错误可能是这样转换的:

int[] intArray1 = new int[2]; List<Integer> list1 = Arrays.asList(intArray1);//此处报错!!!

报错原因:等号两边类型不一致,当然编译不通过。分析见下文。

那么在声明数组时,用int[] 还是Integer[],哪种声明方式才能正确的转为List呢?

答案: 只能用Integer[]转List,即只能用基本数据类型的包装类型,才能直接转为List。

原因分析如下:

我们来看List在Java源码中的定义(别害怕看不懂源码,看我分析,很易懂的):

public interface List<E> extends Collection<E> {省略&hellip;}

再来看Arrays.asList()的在Java源码定义:

public static List asList(T... a) {     return new ArrayList<>(a); }
  • 从上述源码中可以看出,List声明时,需要传递一个泛型

    作为形参,asList()参数类型也是泛型中的通配类型。Java中所有的泛型必须是引用类型。
  • 什么是引用类型?Integer是引用类型,那int是什么类型?int是基本数据类型,不是引用类型。这就是为什么java中没有List

    ,而只有List
  • 举一反三:其他8种基本数据类型byte、short、int、long、float、double、char也都不是引用类型,所以8种基本数据类型都不能作为List的形参。但String、数组、class、interface是引用类型,都可以作为List的形参,所以存在List

    接口类型的集合、List

有了上述基础知识后,再来看为什么下面两行代码第二行能编译通过,第三行却编译报错?

int[] intArray1 = new int[1];  Arrays.asList(intArray1);//编译不报错 List<Integer> list1 = Arrays.asList( intArray1);//编译报错

答案:

  • 第二行代码,Arrays.asList()方法的入参是个引用类型的int[],那么返回值类型一定是List

  • 第三行报错,因为等号两边的类型不一致,左边:List

    ,右边List

看完上述内容,你们对Java中将数组转换为List有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网精选频道,感谢大家的支持。

--结束END--

本文标题: Java中将数组转换为List

本文链接: https://www.lsjlt.com/news/281961.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java中将数组转换为List
    今天就跟大家聊聊有关Java中将数组转换为List,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一.最常见方式(未必最佳)通过 Arrays.asList(strArray) &nb...
    99+
    2023-06-16
  • Java中将int[]数组转换为List分享
    目录前言为什么不能用 Arrays 的 asList 方法将 int[] 装换成 ArrayList使用stream进行转换(jdk8 推荐)遍历数组,逐个加入元素到List中前言 ...
    99+
    2022-12-09
    Java int[] 数组 转换list java 数组转list Java ArrayList 数组之间相互转换
  • 如何在python中将numpy数组转换为list
    如何在python中将numpy数组转换为list?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。python主要应用领域有哪些1、云计算,典型应用OpenSta...
    99+
    2023-06-14
  • 将 List 转换为 String
    将 List 转换为 String的几种方式 使用toString()方法将 List 转换为 String 2、使用Java 8 Streams Collectors api和String.join...
    99+
    2023-09-22
    java
  • 怎么在Java中将Object转换为List类型
    怎么在Java中将Object转换为List类型?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。转换方法这时候可以自己写一个工具类,用来对接收到的Object类型...
    99+
    2023-06-14
  • Java如何将数组转换成List?(代码示例)
    有时候我们需要将数组类型转换成为集合类型,因为后者是一个更为强大的数据结构,java.util.List 有许多普通数组不支持的功能。比如:我们可以通过List的内置方法轻易地检测list是否包含某一个特定的值。下面是一些怎么将数组转换为l...
    99+
    2019-10-30
    java教程 java 数组 List
  • Java将Object转换为数组的代码
    今天在使用一个别人写的工具类,这个工具类,主要是判空操作,包括集合、数组、Map等对象是否为空的操作。 下面展示了一部分代码: public static boolean isEmp...
    99+
    2022-11-13
  • python如何将array转换为list
    要将一个numpy数组(array)转换为Python列表(list),可以使用tolist()函数。下面是一个示例代码:```py...
    99+
    2023-08-11
    python
  • PHP中如何将List数据转为JSON数组
    本篇内容主要讲解“PHP中如何将List数据转为JSON数组”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PHP中如何将List数据转为JSON数组”吧!首先,我们要在PHP中定义一个List。...
    99+
    2023-07-05
  • 怎么在c#中将DataTable转换为List
    本篇文章为大家展示了怎么在c#中将DataTable转换为List,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。  直接写一个datatable转list的类 利用泛型来写,更加通用pub...
    99+
    2023-06-14
  • php将数字转换为数组
    我们知道,在编程中,数字和数组是两个不同的概念。数字是表示数值的基本单位,而数组则是存储多个数据项的集合。有时我们需要把数字转换成数组。在PHP中,实现这一过程非常简单。PHP提供了许多内置的函数,可以轻松地将数字转换为数组。以下是一些常用...
    99+
    2023-05-19
  • Java中怎么将list转换成map
    这篇文章主要介绍了Java中怎么将list转换成map的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java中怎么将list转换成map文章都会有所收获,下面我们一起来看看吧。在java后端编程中,我们时常会有...
    99+
    2023-06-29
  • Java怎么将映射值转换为数组
    本篇内容介绍了“Java怎么将映射值转换为数组”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!将映射值转换为数组示例导入 java。...
    99+
    2023-06-02
  • java怎么将字符串转换为数组
    在Java中,你可以使用`toCharArray()`方法将字符串转换为字符数组。以下是一个示例:```javaString str...
    99+
    2023-09-22
    java
  • 将 Java List<entity> 中某个属性转为 List<string>
    在 Java 中,将 List 中的某个属性转换为 List 的方法如下: // 假设我们有一个实体类 Entity,其中有一个属性 namepublic class Entity { priv...
    99+
    2023-09-15
    java jvm 开发语言
  • Python如何将list中的string转换为int
    目录如何将list中的string转换为int在Python2中这样操作在Python3中这样操作Python-string,list,int互转记录如何将list中的string转...
    99+
    2022-11-11
  • javascript中怎么将数组转换为string
    javascript中怎么将数组转换为string,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 实现方法有:1、...
    99+
    2022-10-19
  • 怎么在java中将Arrays转换成list
    本篇文章给大家分享的是有关怎么在java中将Arrays转换成list,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。常用的java框架有哪些1.SpringMVC,Spring...
    99+
    2023-06-14
  • 如何将 Bash 数组转换为 HTTP 数组?
    在 Bash 编程中,数组是一种非常有用的数据结构。它可以帮助我们存储和处理大量的数据,以及执行各种操作。然而,当我们需要将 Bash 数组转换为 HTTP 数组时,我们需要一些特定的技巧和工具。本文将探讨如何将 Bash 数组转换为 H...
    99+
    2023-09-23
    http 数组 bash
  • Java 中数组Array和列表List的转换
    主要介绍Java中Java 中数组Array和列表List的转换。 一、数组Array转列表List 1.使用Collections.addAll()方法 使用Collections.addAl...
    99+
    2023-09-10
    java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作