当前位置: 首页 > news >正文

Arrays.asList

直接去看原文

原文链接:Arrays.asList() 详解-CSDN博客

-------------------------------------------------------------------------------------------------------------------------------- 

【1. 要点】

 该方法是将数组转化成List集合的方法。

 List<String> list = Arrays.asList("a","b","c");

注意:

(1)该方法适用于对象型数据的数组(String、Integer...)

(2)该方法不建议使用于基本数据类型的数组(byte,short,int,long,float,double,boolean)

(3)该方法将数组与List列表链接起来:当更新其一个时,另一个自动更新

(4)不支持add()、remove()、clear()等方法

【2.Arrays.asList()是个坑】

用此方法得到的List的长度是不可改变的,

当你向这个List添加或删除一个元素时(例如 list.add("d");)程序就会抛出异常(java.lang.UnsupportedOperationException)。 怎么会这样?只需要看看asList()方法是怎么实现的就行了:

public static <T> List<T> asList(T... a) {return new ArrayList<>(a);}

当你看到这段代码时可能觉得没啥问题啊,不就是返回了一个ArrayList对象吗?问题就出在这里。

这个ArrayList不是java.util包下的,而是java.util.Arrays.ArrayList

它是Arrays类自己定义的一个静态内部类,这个内部类没有实现add()、remove()方法,而是直接使用它的父类AbstractList的相应方法。

而AbstractList中的add()和remove()是直接抛出java.lang.UnsupportedOperationException异常的!

public void add(int index, E element) { throw new UnsupportedOperationException();}

public E remove(int index) {throw new UnsupportedOperationException();}

总结:如果你的List只是用来遍历,就用Arrays.asList()。

           如果你的List还要添加或删除元素,还是乖乖地new一个java.util.ArrayList,然后一个一个的添加元素。

【3.示例代码】

package cn.wyc;import java.util.Arrays;
import java.util.List;public class Test {public static void main(String[] args){//1、对象类型(String型)的数组数组使用asList(),正常String[] strings = {"aa", "bb", "cc"};List<String> stringList = Arrays.asList(strings);System.out.print("1、String类型数组使用asList(),正常:  ");for(String str : stringList){System.out.print(str + " ");}System.out.println();//2、对象类型(Integer)的数组使用asList(),正常Integer[] integers = new Integer[] {1, 2, 3};List<Integer> integerList = Arrays.asList(integers);System.out.print("2、对象类型的数组使用asList(),正常:  ");for(int i : integerList){System.out.print(i + " ");}
//        for(Object o : integerList){
//            System.out.print(o + " ");
//        }System.out.println();//3、基本数据类型的数组使用asList(),出错int[] ints = new int[]{1, 2, 3};List intList = Arrays.asList(ints);System.out.print("3、基本数据类型的数组使用asList(),出错(输出的是一个引用,把ints当成一个元素了):");for(Object o : intList){System.out.print(o.toString());}System.out.println();System.out.print("   " + "这样遍历才能正确输出:");int[] ints1 = (int[]) intList.get(0);for(int i : ints1){System.out.print(i + " ");}System.out.println();//4、当更新数组或者List,另一个将自动获得更新System.out.print("4、当更新数组或者List,另一个将自动获得更新:  ");integerList.set(0, 5);for(Object o : integerList){System.out.print(o + " ");}for(Object o : integers){System.out.print (o + " ");}System.out.println();//5、add()   remove() 报错System.out.print("5、add()   remove() 报错:  ");
//        integerList.remove(0);
//        integerList.add(3, 4);
//        integerList.clear(); }}
 

http://www.lryc.cn/news/232796.html

相关文章:

  • XXXX项目管理目标(某项目实施后基于软件工程的总结)
  • 连新手小白都知道的电子画册一键生成器,你还不知道吗?
  • JAVAEE初阶 操作系统
  • 第四代智能井盖传感器:万宾科技智能井盖位移监测方式一览
  • 了解JS中的混个对象“类”
  • 在Sprinng Boot中使用Redis充当缓存
  • 【网络】TCP协议的相关实验
  • 微服务测试怎么做
  • 第9章 K8s进阶篇-持久化存储入门
  • MathType2024最新word公式编辑器
  • 英语语法 - 主语从句
  • 千梦网创:实现自动化“挂机躺盈”的三种方法
  • 微信小程序页面传递参数方法
  • 出行类app如何提升广告变现收益?
  • 万能在线答题考试小程序源码系统 既能刷题 又能考试 带完整的搭建教程
  • 《Linux从练气到飞升》No.30 深入理解 POSIX 信号量与生产消费模型
  • 高防IP可以抵御哪些恶意攻击
  • vivado产生报告阅读分析6-时序报告2
  • 电脑怎么备份文件?简单几步,轻松备份!
  • 获得不同干扰程度的模糊图像
  • spring为什么要使用三级缓存来解决循环依赖
  • 【自留地】前端 - uniapp - Vue - React - Flutter
  • 深度学习损失函数
  • 百度智能云正式上线Python SDK版本并全面开源
  • Elasticsearch的配置学习笔记
  • LeetCode(25)验证回文串【双指针】【简单】
  • Android设计模式--工厂模式
  • EasyExcel入门使用教程
  • Golang实现一个一维结构体,根据某个字段排序
  • python语言实现背包问题动态规划