精华内容
下载资源
问答
  • 2022-03-21 15:27:46

    1 数组转换为List

    1.1 使用java.util.Arrays工具类中的asList()方法

    String[] arrays = {"a", "b", "c"};
    List<String> list = Arrays.asList(arrays);
    

    注意 : 将数组转换List后,不能对List增删,只能查改,否则抛出 UnsupportedOperationException异常

    • 对转换后的List插入一条数据

      list.add("d");
      

      执行后抛出 :

      java.lang.UnsupportedOperationException
      	at java.util.AbstractList.add(AbstractList.java:148)
      	at java.util.AbstractList.add(AbstractList.java:108)
      

    原因解析:

    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后,不需要增删其中的值,仅作为数据源读取使用。

    1.2 使用Stream中的Collector收集器

    String[] arrays = {"a", "b", "c"};
    List<String> listStrings = Stream.of(arrays).collect(Collectors.toList());
    
    • 转换后的List 属于 java.util.ArrayList 能进行正常的增删查操作

    2. List转换为数组

    2.1 使用Stream

    List<String> list = new ArrayList<>();
    		list.add("a");
    		list.add("b");
    		list.add("c");
    		String[] strings = list.stream().toArray(String[]::new);
    

    2.2 使用List中的toArray()方法

    List<String> list = new ArrayList<>();
    		list.add("a");
    		list.add("b");
    		list.add("c");
    String[] strings = list.toArray(new String[list.size()]);
    
    更多相关内容
  • Java 数组转List的四种方式

    千次阅读 2021-09-04 21:39:56
    Java 数组转List的四种方式 第一种方式(未必最佳):使用ArrayList.asList(strArray) ​ 使用Arrays工具类Arrays.asList(strArray)方式,转换完成后,只能对List数组进行查改,不能增删,增删就会抛出...

    Java 数组转List的四种方式

    第一种方式(未必最佳):使用ArrayList.asList(strArray)

    ​ 使用Arrays工具类Arrays.asList(strArray)方式,转换完成后,只能对List数组进行查改,不能增删,增删就会抛出UnsupportedOperationException 异常

    import java.util.Arrays;
    import java.util.List; 
    public static void Demo1() {
            String[] str = {"fgx", "lzy"};
            //注意这个List不是Collections包内的List,而是util包里面的List接口
            List<String> ints = Arrays.asList(str);
        	//这里会报错
            ints.add("laopo");
        }
    

    添加数据报错:

    Exception in thread "main" java.lang.UnsupportedOperationException
    	at java.util.AbstractList.add(AbstractList.java:148)
    	at java.util.AbstractList.add(AbstractList.java:108)
    	at JAVA基础.JDK8新特性.Java数组转List.Demo1(Java数组转List.java:20)
    	at JAVA基础.JDK8新特性.Java数组转List.main(Java数组转List.java:13)
    

    报错原因:Arrays.asList(str)返回值是java.util.Arrays类中一个私有静态内部类 java.utiil.Arrays.Arraylist,并不是我们平时用的java.util.ArrayList();

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

    第二种方法(支持增删查改):

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

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

      String[] str = {"fgx", "lzy"};
            //注意这个List不是Collections包内的List,而是util包里面的List接口
            java.util.ArrayList<String> strings = new ArrayList<>(Arrays.asList(str));
            strings.add("aop");
            strings.stream().forEach(System.out::println);
    

    image-20210904210509510

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

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

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

     public static void Demo3() {
            //注意这个List不是Collections包内的List,而是util包里面的List接口
            String[] str = {"fgx", "lzy"};
            java.util.ArrayList<String> stringList = new ArrayList<>(str.length);
            Collections.addAll(stringList,str);
        }
    

    第四种方式通过JDK8的Stream流将3总基本类型数组转为List

    ​ 如果JDK版本在1.8以上,使用流stream来将下列3种数组快速转为List,分别是int[],long[],double[],不支持short[ ],byte[ ],char[]在JDK1.8中暂不支持.

     int[] ints = {2, 34, 55, 22, 11};
            long[] longs = {1, 2, 3};
            double[] doubles = {1, 2, 3};
            Arrays.stream(ints).boxed().collect(Collectors.toList());
            Arrays.stream(longs).boxed().collect(Collectors.toList());
            Arrays.stream(doubles).boxed().collect(Collectors.toList());
    

    TIPs:为什么int[]不能直接转为List,而Integer[]可以转为List,而Integer[]就可以转为List了,因为List中的泛型必须是引用类型。

    展开全文
  • JAVA-数组List转换

    千次阅读 2022-03-30 16:51:38
    日常开发时,经常遇到需要List数组互相转换的场景。 List转换成数组,可以用List的toArray()或者toArray(T[] a)的方法。 数组转换成List,可以用Arrays.asList()或者Collections.addAll()方法。 如果仅仅为了打印...

    日常开发时,经常遇到需要List与数组互相转换的场景。
    List转换成数组,可以用List的toArray()或者toArray(T[] a)的方法。
    数组转换成List,可以用Arrays.asList()或者Collections.addAll()方法。
    如果仅仅为了打印数组,不需要把数组转换成List,
    可以使用Arrays.toString()方法。

    一.List转数组

    List转换成数组可以调用toArray方法,可以将List直接转为Object[]数组
    这里有两个重载的方法,
    一般使用带泛型参数的方法:

    Object[] toArray();
    <T> T[] toArray(T[] a);

    无参数toArray方法,这里注意不能强转,可能会出现报错.

    泛型的toArray方法要注意类型必须是包装类型,基本类型是不行的.

    二.数组转List

    可以使用Arrays.asList()或者Collections.addAll()方法,推荐使用Collections.addAll()方法,这样得到的返回对象可以往里面添加新的元素。

    String[] strArray = { "a", "b" };
    List<String> strList = Arrays.asList(strArray);

    注意该方法的返回值是java.util.Arrays类中一个私有静态内部类java.util.Arrays.ArrayList,
    它并非java.util.ArrayList类。
    java.util.Arrays.ArrayList类具有set(),get(),contains()等方法,但是不支持添加add()或删除remove()方法,调用这些方法会报错。

    如果直接往返回的list添加一个新元素,运行会报错UnsupportedOperationException

    strList.add("c");

    解决方法是新建一个List对象,并且加入返回的strList,然后再add新元素:

    List<String> strListNew = new ArrayList<>(strList);
    strListNew.add("new data");

    Collections.addAll():

    String[] strArray = { "a", "b" };
    List<String> strList = new ArrayList<>(strArray.length);
    Collections.addAll(strList, strArray);
    strListNew.add("c");

    得到的返回对象可以直接添加新的元素。

    Java8可用stream流将3种基本类型数组转为List

    List<Integer> intList= Arrays.
    stream(new int[] { 1, 2,  3}).boxed().collect(Collectors.toList());
    List<Long> longList= Arrays.
    stream(new long[] { 1, 2, 3 }).boxed().collect(Collectors.toList());
    List<Double> doubleList= Arrays.
    stream(new double[] { 1, 2, 3 }).boxed().collect(Collectors.toList());
    
    String[] arrays = {"a", "b", "c"};
    List<String> stringList= Stream.of(arrays).collect(Collectors.toList());

    其他的数据类型short[]byte[]char[]在JDK1.8中目前不支持

    展开全文
  • 下面小编就为大家带来一篇浅谈java 字符串,字符数组,list间的转化。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • Java中将数组转List

    千次阅读 2021-01-18 22:52:25
    在开发中,我们有时候会需要将数组转换为集合List,这时候可能会想到Arrays.asList(),毕竟它是java提供的,肯定专业。。。吗? Integer[] a = {1, 2, 3}; List<Integer> list = Arrays.asList(a); System.out...

     

    1.Arrays.asList坑点说明

    在开发中,我们有时候会需要将数组转换为集合List,这时候可能会想到Arrays.asList(),毕竟它是java提供的,肯定专业。。。吗?

    Integer[] a = {1, 2, 3};
    List<Integer> list = Arrays.asList(a);
    System.out.println(list);
    

    但是实际上这里面有个大坑,如果不熟悉很容易GG。

    就是它转换成的其实是个“假List”,为什么这么说呢,因为它返回的其实是Arrays的内部类,只重写了集合的一部分方法。本质上还是数组,你也不能用它进行新增和移除操作,甚至当你修改原本的数组时,这个假List的内容也会随之改变

     

    2.Arrays.asList使用

    尽管它有点坑,我们也要知道它的正确使用方法

    ①转换的数组不能是基本类型

    首先,它转换的数组不能是基本类型,也就是如果要转基本类型,至少也要用包装类。

    如下的结果是有问题的,会数组下标越界,因为实际上这个List只有一个元素,并且这个元素是整个数组对象a,并没有进行转换::

    int[] a = {1, 2, 3};
    List list = Arrays.asList(a);
    System.out.println(list.get(1));
    

    如下才是正确的结果,返回2:

    Integer[] a = {1, 2, 3};
    List list = Arrays.asList(a);
    System.out.println(list.get(1));
    
    ②不能使用集合的操作方法

    像add、remove、clear都是不能使用的,会抛出UnsupportedOperationException异常,因为Arrays.asList() 方法返回的并不是 java.util.ArrayList,而是 java.util.Arrays的一个内部类,这个内部类没有重写集合的这些方法。

    但是set还是能用的,可以重写修改单个元素的值。

    我们可以在Arrays中查看源码,只重写了get、set、indexOf、contains、forEach、replaceAll和sort方法。

     

    3.怎样完全的将数组转换为ArrayList

    所以如果我们要将数组转换为ArrayList,尽量不要用上面那种方式,不然到时候崩都不知道是怎么崩的。

    一般是这样:

    Integer[] a = {1, 2, 3};
    List<Integer> list = new ArrayList<>(Arrays.asList(a));
    

    也可以用jdk8的stream搞定:

    Integer[] a = {1, 2, 3};
    List list = Arrays.stream(a).collect(Collectors.toList());
    

    或借助工具类:Apache Commons Collections

    List<String> list = new ArrayList<String>();
    CollectionUtils.addAll(list, str);
    
    展开全文
  • public List<CaseModular> getImagesExamineJsonList() { if (this.imagesExamineJson != null) { List<CaseModular> caseModularList = JSON.parseObject(this.imagesExamineJson, new TypeReference...
  • Java将JSON对象或JSON数组转list对象

    千次阅读 2020-09-25 11:45:06
    // 数组 List inventoryDTOs = JSON.parseArray(versionInfoStr, InventoryDTO.class); // 对象 InventoryDTO dto =JSON.parseObject(xx,InventoryDTO.class); =================================================...
  • 主要介绍了Java List转换成String数组几种实现方式详解的相关资料,需要的朋友可以参考下
  • java8 对象数组转集合的简单操作

    千次阅读 2020-05-12 15:13:39
    java8对象数组转集合的简单操作 java8版本对传统的集合类的简单操作结合拉姆达表达式相比之前版本方便快捷,很大程度减少了代码量。相对数据库而言大大的减少了数据处理数据的压力。部分统计可以转移在程序中处理。...
  • !!!!!!只能是json数组格式才能使用词方法转换 //JSONString json 数据 { "acchalfyear": [{ "pk_... //此方法可以直接将数据转为List实体对象 List VOlist = JSONArray.parseArray(JsonStr , User.class);
  • 主要介绍了java list,set,map,数组间的相互转换详解的相关资料,这里附有实例代码,具有参考价值,需要的朋友可以参考下
  • 方法一: List<String> list = new ArrayList<>(); Collections.addAll(list,ids); 方法二: Arrays.asList(userIds)
  • Java8 stream数组转List

    千次阅读 2019-05-04 20:26:56
    String[] arr = {“a”, “b”, “c”}; List list = Stream.of(arr).collect(Collectors.toList());
  • 数组的工具类Arrays提供了一个静态方法:arrList,可将一个数组转换为 一个List public class ArrayToListDemo { public static void main(String[] args) { String[] arr={"one","two","three","four","five"}; ...
  • /** * json数组转List */ List<Student> stus = (List<Student>)JSONArray.parseArray(array.toJSONString(), Student.class);... * Json对象转java对象 */ Student stu = JSONObject.parseObject(...
  • public List<Long> test(String numberStr) { String[] strs = orderNumberStr.split(","); List<Long> numbers = Arrays.stream(strs).map(str -> Long.parseLong(str.trim())).collect...
  • java-将对象数组转换为字符串数组

    千次阅读 2021-03-09 09:42:21
    我有一个包含商品名称,价格等数据的商品类,当卖家想出售商品时,我将其添加到商品类中,如下所示:public void sellItem(String itemName, double Price) throws java.rmi.RemoteException, Exception {items.add(new ...
  • import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.function.Function; import java.util.function.Predicate; import org.springframework.boot....
  • java数组List相互转换的方法

    千次阅读 2021-02-28 15:21:39
    1.List转换成为数组。(这里的List是实体是ArrayList)调用ArrayList的toArray方法。toArraypublic T[] toArray(T[] a)返回一个按照正确的顺序包含此列表中所有元素的数组;返回数组的运行时类型就是指定数组的运行时...
  • 首先,获取的json格式是数组对象的格式,如下: [{"id":3,"courseID":"8A60788A-A7B5-4417-8280-EE7FE7922B11","eva_name":"评价体系1"},{"id":2,"courseID":"00DAD2FD-2313-4912-ACA0-D2CD433F5793","eva_name":...
  • Java 数组List的使用

    2022-04-26 22:22:54
    Java中数据的保存离不开数组,但数组的长度是不可变的。这时候就需要列表类(List)来进行数组扩容等操作,同时列表还可以包含批量删除、修改等更方便的内容。同时ArrayList作为使用相当频繁的List类,它的扩容算法...
  • } } 最后都是得到 偏好零售,偏好金融,偏好教育 补充:对象转json JSON.toJSONString(product) public class MetadataTest { public static void main(String[] args) { KeyValue keyValue = new KeyValue();...
  • Java数组Array和List对象的相互转换

    千次阅读 2019-04-12 09:53:17
    list=new ArrayList<String>(); String strings[]=(String [])list.toArray(); 编译报错,觉得很迷惑,因为有如下2个类似的方法 JDK5中已经有了对范型的支持,这样可以保证在集合和Map中的数据类型的安全...
  • 对象数组转换为List

    千次阅读 2017-11-14 20:51:00
    对象数组转换为List,空类型安全。 importjava.util.ArrayList;importjava.util.Arrays;importjava.util.List;/** * 对象数组转换为List * * @author leizhimin 2010-4-29 19:08:12 */publiccla...
  • java 中将数组转换成list的方法

    千次阅读 2019-09-23 17:22:09
    java 中将数组转换成list的方法 目录:         1.将数组转list的一般方法         2.一般方法的弊端     ...
  • 数组+用stream流将数组转list

    千次阅读 2021-08-06 14:08:37
    数组 数组是相同类型数据的集合 数组有先后顺序 取数组中的值通过下标,下标从0开始 arr.length 获取数组长度 数组的声明和创建 //数组的声明 int[] nums; //推荐使用 int nums[]; //数组得到创建 nums = new int...
  • 输出:[{"id":0,"uname":"rumen0","upass":"1230"},{"id":1,"uname":"rumen1","upass":"1231"},{"id":2,"uname":"rumen2","upass":"1232"}] JSON字符串转JAVA对象数组 JSON.parseObject//单个对象 Rumenz r = new ...
  • Java中创建对象数组

    千次阅读 2021-01-16 16:52:24
    1.对象数组的概念: 如果一个数组中的元素是对象类型,则称该数组为对象数组。当需要一个类的多个对象时,应该用该类的对象数组来表示,通过改变下标值就可以访问到不同的对象。 2.对象数组的定义和使用: 对象数组...
  • 将json数组转换为java列表对象

    千次阅读 2021-03-06 03:57:27
    参见英文答案 >How to deserialize a list using GSON or another JSON library in Java?5个我从服务器响应中获得了一个json数组:[{"id":1, "name":"John", "age": 20},{"id":3, "name":"Tomas", "...
  • 数组转LIst的几种方法

    千次阅读 2021-11-26 16:23:52
    * 针对数组类型转换 * 分别是int[]、long[]、double[],其他数据类型比如short[]、byte[]、char[],在JDK1.8中暂不支持 */ List<Integer> intList= Arrays.stream(new int[] { 1, 2, 3, }).boxed()....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 388,639
精华内容 155,455
关键字:

java对象数组转list

java 订阅