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…
api: public static <T> List<T> asList(T... a) 返回一个受指定数组支持的固定大小的列表.(对返回列表的更改会“直接写”到数组.)此方法同 Collection.toArray() 一起,充当了基于数组的 API 与基于 collection 的 API 之间的桥梁.返回的列表是可序列化的,并且实现了 RandomAccess. 此方法还提供了一个创建固定长度的列表的便捷方法,该列表被初始化为包含多个元素: List<String&g…
import java.util.Arrays; public class TestCalc{ public static void main(String[] args) { ,,,,,,,}; //System.out.println(Arrays.asList(digit)); // [[I@193c0cf] System.out.println(Arrays.toString(digit)); // [1, 2, 3, 4, 5, 6, 7, 8] } }…
今天看代码时, 发现书上使用了Arrays.asList()方法, 将一个数组转成了List, 然后说到得到的List不能调用add(), remove()方法添加元素或者删除,带着疑问看了下内部实现原理, 看了别人博客明白了, 为啥不能调用add(), remove()方法了.下面是转载的一篇文章. 转载:http://www.lai18.com/content/10306565.html Arrays工具类提供了一些比较实用的方法,比如sort, binarySearch, fill等.其中…
最近在用Arrays的asList()生成的List时,List元素的个数时而不正确. Java代码 一:Arrays.asList(数组)该方法是将数组转化为集合(该方法主要用于Object对象数组,如果是基本类型该方法获得的.size()长度都为1) //经多次测试,只要传递的基本类型的数组,生成List的元素个数均为1 char arrc = {'a','b'}; int  arrint = {1,2,4}: Arrays.asList(arrc).size() ;//  结果为1: Ar…
import java.util.Arrays; import java.util.List; /** * * 本类演示了Arrays类中的asList方法 * 通过四个段落来演示,体现出了该方法的相关特性. * * (1) 该方法对于基本数据类型的数组支持并不好,当数组是基本数据类型时不建议使用 * (2) 当使用asList()方法时,数组就和列表链接在一起了. * 当更新其中之一时,另一个将自动获得更新. * 注意:仅仅针对对象数组类型,基本数据类型数组不具备该特性 * (3) asLis…
将数组转成List问题,通常我们习惯这样写成:List<String> list = Arrays.asList("1","2"); 于是我们这样就得到了一个list,但是这个List的实现类是java.util.Arrays.ArrayList这个类(而不是java.util.ArrayList). 剖析JDK源代码可以发现,java.util.Arrays.ArrayList(就是转换出来list)它是继承了java.util.AbstractLis…
最近代码中需要对两个数组求交,想当然便用到了List中的retainAll函数,但要将将数组转换成list.代码如下: String[] abc = new String[] { "abc", "acd", "add" }; String[] abd = new String[] {"acd", "cd", "de"}; List<String> abcList = Arra…
以前一直很奇怪为什么Arrays.asList的数组不能插入新的数据,后来看了源码发现是因为内部是一个final的数组支持起来的Arraylist,下面贴入源码与分析. 1.先看Arrays的方法 我们看到Arrays.aslist 返回一个new ArrayList<>(a); @SafeVarargs public static <T> List<T> asList(T... a) { return new ArrayList<>(a); } 2.我们按…
最近在用Arrays的asList()生成的List时,List元素的个数时而不正确. Java代码 //经多次测试,只要传递的基本类型的数组,生成List的元素个数均为1 char arrc = {'a','b'}; int arrint = {1,2,4}: Arrays.asList(arrc).size() ;// 结果为1: Arrays.asList(arrint ).size() ;//结果为1: //传递对象数组,元素个数正确. String arrstr = {"a"…
java中的方法Arrays.asList(arg1,arg2,arg3...),经常用在将多个元素或数组转化为List中的元素,但是在使用的时候,应该注意: arg1决定返回list的元素类型(即第一个元素),例如: Arrays.asList(new Integer(),new Double(),new Long(),new String()) ;会报编译错误,因为第一个元素决定了返回类型为List<Integer>. Arrays.asList(new Object(),new Doub…
总结 利用Arrays.asList方法返回的List是不允许add和remove的,这种list的长度不可变,因为底层依然是写数组. Arrays.asList的返回值是调用是传入T类型的List,所以传入啥,返回啥的列表 T... a 底层本来就是转换为T[] x的数组,所以如果传入的T是数组,最后的底层参数是二维数组T[][] y. Arrays.asList(T... a)方法的作用 将数组转为集合的方法,返回的是List集合.和Collection的toArray对应,是数组和集合间相…
Java.Util.Arrays可以将数组转换为List,具体的定义如下: @SafeVarargs public static <T> List<T> asList(T... a) { return new ArrayList<>(a); } 可以看到实际上是将这个数组转换成为了ArrayList<>,看似没有问题,但是当我们使用add和remove的时候,会发现会抛出UnsupportedOperationException,为什么?这个不科学呀! 进入…
Arrays.asList() 是将数组作为列表 问题来源于: public class Test { public static void main(String[] args) { int[] a = {1,2,3,4}; List list = Arrays.asList(a); System.out.println(list.size()); } } 期望的输出是 list里面也有4个元素,也就是size为4,然而结果是1. 原因如下: 在Arrays.asList中,该方法接受一个变长…
1.数组--->List String[] ss={"abc","def","xyz","aaaaaaaa","bbbb","abc"}; List<String> list=new ArrayList<String>(Arrays.asList(ss));//按添加顺序显示 System.out.println("list---->&quo…
import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.List; public class ArraysAsListDemo { public static void main(String[] args) { List<String> source1 = new ArrayList<String>(Arrays.asList("1&q…
java.util类 Arrays java.lang.Object——java.util.Arrays public class Arrays extends Object 此类包含用来操作数组(比如排序和搜索)的各种方法.此类还包含一个允许将数组作为列表来查看的静态工厂. 除非特别注明,否则如果指定数组引用为 null,则此类中的方法都会抛出 NullPointerException.一段有意思的代码如下: public static void main(String[] args) { i…
前言: Collections.toArray()与Arrays.asList() 是Java API提供的友好的相互转换工具,日常开发中用于列表和数组之间的转换非常方便,但今天测试时,发现一下隐藏的坑... Exception: terms=[此物只应天上有, 我你他, 12306,一按我帮您]Exception in thread "main" java.lang.UnsupportedOperationException at java.util.AbstractList.add…
Java中奖数组转换为List<T>容器有一个很方便的方法 Arrays.asList(T ... a),我通过此方法给容器进行了赋值操作,接着对其进行 添加元素,却发现会抛出一个(java.lang.UnsupportedOperationException)异常. 看了一下源码: public static <T> List<T> asList(T... a) { return new ArrayList<T>(a); } 定位到 ArrayList 内…
一.背景:使用工具类 Arrays.asList()把数组转换成集合时,使用其修改集合相关的方 法,它的 add/remove/clear 方法会抛出 UnsupportedOperationException 异常. 二.分析:既然是List为何不能进行增删改的操作? 1.Arrays.asList(str)调用的是Arrays类中的asList方法,该方法返回一个ArrayList对象. 2.进入asList方法发现这个ArrayList是Arrays的一个继承AbstractList的静态…
前言 最近在网上看到一个问题,情况类似如下(记为问题1): public class Demo { public static void main(String[] args) { System.out.println(testInteger(1)); System.out.println(testInt(1)); } public static boolean testInteger (Integer num) { Integer[] nums = new Integer[]{1, 2, 3,…
分析如下例子: 1 import java.util.Arrays; 2 import java.util.List; 3 4 5 public class Test { 6 public static void main(String[] args) { 7 Integer[] a = {0,1,2,3,4,5,6}; 8 List<Integer> c = Arrays.asList(a); 9 for (Integer integer : c) { 10 System.out.print…
使用 Arrays.asList("str1", "str2")生成的List,不能进行remove.add操作,会产生异常java.lang.UnsupportedOperationException. List<String> list = Arrays.asList("str1", "str2"); list.add("str3"); System.out.println(list); 原…
1. 简介 Arrays.asList()方法可以将数组转化为长度固定的列表. 该方法强调了列表的长度是固定的,因此不能使用list的add和remove方法修改list长度. 2. 示例 import java.util.*; public class ListFunc1 { public static void main(String[] args){ Integer[] array1 = new Integer[]{1,2,3,4}; List<Integer> list1 = Arra…
Java中,可以使用Arrays.asList(T... a)方法来把一个数组转换为List,返回一个受指定数组支持的固定大小(注意是固定大小)的列表.此方法同 Collection.toArray()一起,充当了基于数组的 API 与基于 collection 的 API 之间的桥梁.返回的列表是可序列化的,并且实现了 RandomAccess. 此方法还提供了一个创建固定长度的列表的便捷方法,该列表被初始化为包含多个元素: List<String> stooges = Arrays.asL…
Sometimes it is needed to convert a Java array to List or Collection because the latter is a more powerful data structure - A java.util.List have many functionality that ordinary array do not support. For example, we can easily check if a List contai…
Collections.singletonList(something)是不可变的, 对Collections.singletonList(something)返回的列表所做的任何更改将导致UnsupportedOperationException . Arrays.asList(something)允许Arrays.asList(something) 更改  . 此外,由Collections.singletonList(something)返回的List的容量将始终为1, 而Arrays.a…
[代码] package com.hxl; import java.util.Arrays; import java.util.List; public class Test { public static void main(String[] args) { // 定义一个数组 String[] ss = { "Hello", "World", "Java", "Android", "JavaScript"…
首先,该方法是将数组转化为list.有以下几点需要注意: (1)该方法不适用于基本数据类型(byte,short,int,long,float,double,boolean) (2)该方法将数组与列表链接起来,当更新其中之一时,另一个自动更新 (3)不支持add和remove方法 上代码: package com.hdu.test; import java.util.Arrays; import java.util.List; abstract public class AsllistTest…
前言 最近在项目上线的时候发现一个问题,从后台报错日志看:java.lang.UnsupportedOperationException异常 从代码定位来看,原来是使用了Arrays.asList()方法时把一个数组转化成List列表时,对得到的List列表进行add()和remove()操作, 所以导致了这个问题. 对于这个问题,现在来总结下,当然会总结Arrays下面的一些坑. 源代码分析 首先,遇到问题不可怕,遇到问题解决就是了,但是必须要保证下次不会再犯相同的问题. Arrays.asL…