Arrays.asList()与toArray()】的更多相关文章

Arrays.asList() 使用Arrays.asList()把数组转换成集合时,不能使用用于修改集合的方法(例如add.remove.clear),这将导致跑出UnsupportOperationException异常 asList并没有将其真正转换为集合,且将数组与列表链接起来,当更新其中之一时,另一个自动更新 能用方法: size().subList()... 备注:不适用于基本类型 list.toArray() 将list直接转为Object[] 数组,元素并没有转换为想要的类型 如…
1.ArrayList.toArray() 理解    * 通过源码我们可以看到返回的是Object类型的数组,失去了原有的实际类型,虽然底层存储是具体类型的对象,这也正体现了文档中说的:该方法起到了bridge的作用(This method acts as bridge between array-based and collection-based APIs). #ArrayList.toArray()源码 public Object[] toArray() { return Arrays.…
Arrays.asList() 使用指南 最近使用Arrays.asList()遇到了一些坑,然后在网上看到这篇文章:Java Array to List Examples 感觉挺不错的,但是还不是特别全面.所以,自己对于这块小知识点进行了简单的总结. 简介 Arrays.asList()在平时开发中还是比较常见的,我们可以使用它将一个数组转换为一个List集合. String[] myArray = { "Apple", "Banana", "Orang…
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…
今天看代码时, 发现书上使用了Arrays.asList()方法, 将一个数组转成了List, 然后说到得到的List不能调用add(), remove()方法添加元素或者删除,带着疑问看了下内部实现原理, 看了别人博客明白了, 为啥不能调用add(), remove()方法了.下面是转载的一篇文章. 转载:http://www.lai18.com/content/10306565.html Arrays工具类提供了一些比较实用的方法,比如sort, binarySearch, fill等.其中…
总结 利用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() 是将数组作为列表 问题来源于: 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中,该方法接受一个变长…
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…
前言: Collections.toArray()与Arrays.asList() 是Java API提供的友好的相互转换工具,日常开发中用于列表和数组之间的转换非常方便,但今天测试时,发现一下隐藏的坑... Exception: terms=[此物只应天上有, 我你他, 12306,一按我帮您]Exception in thread "main" java.lang.UnsupportedOperationException at java.util.AbstractList.add…
前言 最近在网上看到一个问题,情况类似如下(记为问题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…
Java中,可以使用Arrays.asList(T... a)方法来把一个数组转换为List,返回一个受指定数组支持的固定大小(注意是固定大小)的列表.此方法同 Collection.toArray()一起,充当了基于数组的 API 与基于 collection 的 API 之间的桥梁.返回的列表是可序列化的,并且实现了 RandomAccess. 此方法还提供了一个创建固定长度的列表的便捷方法,该列表被初始化为包含多个元素: List<String> stooges = Arrays.asL…
前言 最近在项目上线的时候发现一个问题,从后台报错日志看:java.lang.UnsupportedOperationException异常 从代码定位来看,原来是使用了Arrays.asList()方法时把一个数组转化成List列表时,对得到的List列表进行add()和remove()操作, 所以导致了这个问题. 对于这个问题,现在来总结下,当然会总结Arrays下面的一些坑. 源代码分析 首先,遇到问题不可怕,遇到问题解决就是了,但是必须要保证下次不会再犯相同的问题. Arrays.asL…
JDK 1.4对java.util.Arrays.asList的定义,函数参数是Object[].所以,在1.4中asList()并不支持基本类型的数组作参数. JDK 1.5中,java.util.Arrays.asList的定义,函数参数是Varargs, 采用了泛型实现.同时由于autoboxing的支持,使得可以支持对象数组以及基本类型数组. 不过在使用时,当传入基本数据类型的数组时,会出现小问题,会把传入的数组整个当作返回的List中的第一个元素,例如: public static v…
Java的标准库中在java.util包下提供了很多实用的工具类,如:Arrays,Collections等工具类都提供了一些比较实用的方法.在实际的开发使用中,我们经常需要使用这样的需求:将一个数组转换为结合类(List等)或是将一个集合类转换为数组. 在java.util.Arrays中有一个 asList 方法,其作用是将一个数组转换为一个List集合对象.但是,我们调用这个方法生成的List,它是固定长度的,如果对其进行add或者remove的操作,jvm将会抛出 Unsupported…
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中,该方法接受一个变长…
在java.util.ArrayList源码中: c.toArray might (incorrectly) not return Object[] (see 6260652) 产生疑惑: 附上Java Bug 网址:Java Bug Database ,可以根据关键词或bug id 查询详细信息这个Bug的描述中可以看出:原因:Arrays内部实现的ArrayList的toArray()方法的行为与规范不一致.代码测试: import java.util.*; public class Tes…
引语: 阿里巴巴java开发规范说到使用工具类Arrays.asList()方法把数组转换成集合时,不能使用其修改集合相关的方法,它的add/remove/clear方法会抛出UnsupportedOperationException(),我们来看一下为什么会出现这种情况. 问题分析: 我们做个测试 public static void main(String[] args) { List<String> list = Arrays.asList("a", "b&…
简介 Arrays.asList()在平时开发中还是比较常见的,我们可以使用它将一个数组转换为一个List集合. String[] myArray = { "Apple", "Banana", "Orange" }: List<String> myList = Arrays.asList(myArray); //上面两个语句等价于下面一条语句 List<String> myList = Arrays.asList(&quo…
简介 Arrays.asList() 作用是将一个数组转换为一个List 集合. String[] myArray = { "Apple", "Banana", "Orange" }: List<String> myList = Arrays.asList(myArray); //上面两个语句等价于下面一条语句 List<String> myList = Arrays.asList("Apple",&q…
Arrays工具类提供了一个方法asList, 使用该方法可以将一个变长参数或者数组转换成List . 其源代码如下: @SafeVarargs public static <T> List<T> asList(T... a) { return new ArrayList<>(a); } 问题发现 根据上述方法的描述,我们先来编写几个例子: public class ArrayExample { public static void main(String[] args…
Arrays.asList()方法把数组转换成集合时,不能使用其修改集合相关的方法,它的add/remove/clear方法会抛出UnsupportedOperationException(),我们来看一下为什么会出现这种情况. 问题分析 我们做个测试 public static void main(String[] args) {       List<String> list = Arrays.asList("a", "b", "c&quo…
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元素的个数时而不正确. 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"…