Arrays.asList()用法梳理

Arrays.asList()用法梳理

asList概述
  • Arrays是java容器相关操作的工具类,asList方法将Array转换为list,是Array和List之间的桥梁。

    asList本质
  • 使用工具类Arrays.asList()把数组转换成集合时,不能使用其修改集合相关的方法,它的add/remove/clear方法会抛出UnsupportOperationException异常
  • asList的返回对象是一个Arrays内部类,并没有实现集合的修改方法。Arrays.asList体现的是适配器模式,只是转换接口,后台的数据仍是数组。
  • asList方法返回的是数组的一个视图,对这个list的操作都会反映在原数组上,而且这个list是定长的,不支持add、remove等改变长度的方法。
  • 正确的数组转List方式
List<String> b = new ArrayList<>(Arrays.asList(a));
不能把基本数据类型转化为列表
  • 仔细观察可以发现asList接受的参数是一个泛型的变长参数,而基本数据类型是无法泛型化的,这是因为把int类型的数组当参数了,所以转换后的列表就只包含一个int[]元素。
  •  要想把基本数据类型的数组转化为其包装类型的list,可以使用guava类库的工具方法,示例如下:
public class App {
  public static void main(String[] args) {
    int[] intarray = {1, 2, 3, 4, 5};
    //List<Integer> list = Arrays.asList(intarray); 编译通不过
    List<int[]> list = Arrays.asList(intarray);
    System.out.println(list);
  }
}

output:
[[[email protected]]

//使用guava
int[] intArray = {1, 2, 3, 4};
List<Integer> list = Ints.asList(intArray);

原文地址:https://www.cnblogs.com/frankltf/p/10369088.html

时间: 2024-09-30 00:25:27

Arrays.asList()用法梳理的相关文章

Arrays.asList的用法:

Arrays.asList 返回数组而非List. List的一个典型的特性就是其长度是可变的,我们可以很方便地对它进行插入和删除元素的操作,这是它与数组所存在的一个很大的区别,后者的长度是固定的,而且我们不能从数组中删除元素,只能修改元素的值. 利用Arrays.asList(array)返回一个List,然而这个返回的是只读的List不支持add和remove的操作. JDK文档是这么说的: public static <T> List<T> asList(T... a) 返回

Arrays.asList的用法

使用工具类Arrays.asList()把数组转换成集合时,不能使用其修改集合相关的方法,它的add/remove/clear方法会抛出UnsupportOperationException异常说明:asList的返回对象是一个Arrays内部类,并没有实现集合的修改方法.Arrays.asList体现的是适配器模式,只是转换接口,后台的数据仍是数组.String[] str = new String[]{"1","2"};List list = Arrays.as

java Arrays.asList的用法

import java.util.Arrays; import java.util.List; /** * * 本类演示了Arrays类中的asList方法 * 通过四个段落来演示,体现出了该方法的相关特性. * * (1) 该方法对于基本数据类型的数组支持并不好,当数组是基本数据类型时不建议使用 * (2) 当使用asList()方法时,数组就和列表链接在一起了. *     当更新其中之一时,另一个将自动获得更新. *     注意:仅仅针对对象数组类型,基本数据类型数组不具备该特性 * (

【转】java.util.Arrays.asList 的用法

DK 1.4对java.util.Arrays.asList的定义,函数参数是Object[].所以,在1.4中asList()并不支持基本类型的数组作参数. JDK 1.5中,java.util.Arrays.asList的定义,函数参数是Varargs, 采用了泛型实现.同时由于autoboxing的支持,使得可以支持对象数组以及基本类型数组. 不过在使用时,当传入基本数据类型的数组时,会出现小问题,会把传入的数组整个当作返回的List中的第一个元素,例如: public static vo

Arrays.asList( ) 返回一个特殊的“ArrayList”

一个Arrays.asList()基本的用法: String[] str = new String[]{"1","2","3"}; ArrayList al = new ArrayList(Arrays.asList(str));//将数组元素添加到集合的一种快捷方式 有时候这样使用就有可能出现问题: String[] str = new String[]{"1","2","3"}; L

【Java基础】一个有意思的泛型方法Arrays.asList(T... a)

总结 利用Arrays.asList方法返回的List是不允许add和remove的,这种list的长度不可变,因为底层依然是写数组. Arrays.asList的返回值是调用是传入T类型的List,所以传入啥,返回啥的列表 T... a 底层本来就是转换为T[] x的数组,所以如果传入的T是数组,最后的底层参数是二维数组T[][] y. Arrays.asList(T... a)方法的作用 将数组转为集合的方法,返回的是List集合.和Collection的toArray对应,是数组和集合间相

浅谈Arrays.asList()方法的使用

首先,该方法是将数组转化为list.有以下几点需要注意: (1)该方法不适用于基本数据类型(byte,short,int,long,float,double,boolean) (2)该方法将数组与列表链接起来,当更新其中之一时,另一个自动更新 (3)不支持add和remove方法 上代码: 1 package com.hdu.test; 2 3 import java.util.Arrays; 4 import java.util.List; 5 6 abstract public class

Arrays.asList 小结

Arrays.asList()返回一个实现了List接口的类,但是不支持add,remove等改变尺寸的操作. Arrays.asList源码如下 1 public static <T> List<T> asList(T... a) { 2 return new ArrayList<>(a); 3 } 这里有一个大坑,我开始没仔细看,以为返回的就是java.util.ArrayList,可实际上此ArrayList是Arrays里面的私有静态内部类,代码如下所示. 1

Arrays.asList () 不可添加或删除元素的原因

Java中奖数组转换为List<T>容器有一个很方便的方法 Arrays.asList(T ... a),我通过此方法给容器进行了赋值操作,接着对其进行 添加元素,却发现会抛出一个(java.lang.UnsupportedOperationException)异常. 看了一下源码: public static <T> List<T> asList(T... a) { return new ArrayList<T>(a); } 定位到 ArrayList 内