Java 数组转List的四种方式

Java 数组转List的四种方式Java数组转List的四种方式第一种方式(未必最佳):使用ArrayList.asList(strArray)​ 使用Arrays工具类Arrays.asList(strArray)方式,转换完成后,只能对List数组进行查改,不能增删,增删就会抛出UnsupportedOperationException异常importjava.util.Arrays;importjava.util.List;publicstaticvoidDemo1(){String[

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

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中的泛型必须是引用类型。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/172245.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux shell 脚本 入门到实战详解[⭐建议收藏!!⭐]

    linux shell 脚本 入门到实战详解[⭐建议收藏!!⭐]文章目录shell入门到实战详解[⭐建议收藏!!⭐]关于作者**作者介绍**一、shell入门简介1.1什么是shell1.2shell编程注意事项1.3第一个shell脚本helloworld二、shell环境变量讲解2.1shell变量详解2.2shell系统变量介绍2.3shell环境变量介绍2.3.1常见的系统环境变量2.4shell用户环境变量介绍2.4.1自定义shell环境变量2.4.2echo打印菜单栏2.4.3shell中彩色输出h

    2022年7月24日
    9
  • react中postMessage与addEventListener的使用

    react中postMessage与addEventListener的使用有时候两个页面之间不是父子组件的情况下,信息交互很难搞,看到有人用postmessage来进行消息交互,我也试了一下,哎呀妈真香!!!1、首先在需要发送消息的界面中使用postMessage使用的是React+TypeScript,逻辑是更新提交的时候刷新打开当前页面的父窗口,postMessage用法如下:if(window.opener&&window.opener.location&&window.opener.location.href){

    2022年7月12日
    60
  • R语言批量生成CaseWhen的解决方案

    R语言批量生成CaseWhen的解决方案R语言case_when批量生成自定义函数

    2022年9月6日
    4
  • 什么是IO流_io流实现

    什么是IO流_io流实现什么是IO流先看一段百度上的解释:当然:如果你看不懂,那么你只需要记住下面3句话.1.(1).我们知道,每个人家里喝的水都是从自来水厂来的,自来水厂的水又是从水源地来的,(2).水是通过水管来的。(3).那么这当中的水流,便可以理解为IO流。2. 那么JAVA中的IO流呢; (1).在java中,java就是自来水厂,水源地就是源,家就是目的(2)./

    2022年10月20日
    2
  • 微信开放平台认证后怎么实现扫码登录功能[通俗易懂]

    微信开放平台认证后怎么实现扫码登录功能[通俗易懂]主题:微信开放平台认证后怎么实现扫码登录功能在面对这些问题时,同时也是很多刚入手做开发朋友疑惑的希望能帮你们快速完成微信登录配置。以我多天的日夜辛苦测试和实践,同时也是我自己在开发过程中遇到的问题被我不断尝试,一遍又一遍的填写参数,建站平台换几十个,最总发现了这些问题所在给大家总结了以下几点问题和解决方案:1.认证微信开放平台和微信公众平台认证有区别吗?如果只用来作微信登录和使用微信支付,那么告诉你:没有区别,同样是三百块钱认证费用(你只注意一下你的开发资料能一次性通过就行)2.同样能实

    2022年6月9日
    78
  • ts 视频下载[通俗易懂]

    ts 视频下载[通俗易懂]importurllib.requestimportrequests,os,threadingfromCrypto.CipherimportAESfromsrc.Pacho.moviePa.tsdownloadimportaes_decodeclassm3u8down(object):def__init__(self,url,listheaders,dicheaders):self.url=url#这里的url是index.m3.

    2022年7月18日
    18

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号