Java 复习 —— 集合与数组的转换

前言:

很多时候,你会觉得数组使用方便,有些时候你会觉得集合使用更加方便,你们对于集合和数组的转换那就在所难免了,下面总结一下数组与集合的转换。

1、把数组转为集合 Arrays.asList() 

1)网上解释

在使用Arrays.asList()后调用add,remove这些method时出现 java.lang.UnsupportedOperationException 异常。这是由于Arrays.asList() 返回java.util.Arrays$ArrayList, 而不是ArrayList。Arrays$ArrayList和ArrayList都是继承AbstractList,remove,add等method在AbstractList中是默认throw UnsupportedOperationException而且不作任何操作。

ArrayList override这些method来对list进行操作,但是Arrays$ArrayList没有override remove(),add()等,

所以 throw UnsupportedOperationException。

2)官方文档

public static <T> List<T> asList(T... a)

返回一个受指定数组支持的固定大小的列表。(对返回列表的更改会“直接写”到数组。)此方法同 Collection.toArray() 一起,充当了基于数组的 API 与基于 collection 的 API 之间的桥梁。返回的列表是可序列化的,并且实现了 RandomAccess。

此方法还提供了一个创建固定长度的列表的便捷方法,该列表被初始化为包含多个元素:

List<String> stooges = Arrays.asList("Larry", "Moe", "Curly");

3)单元测试

List<String> temp = Arrays.asList(str.split(","));

对于temp是不能进行remove 和 add 操作的,但是可以执行其他的操作,诸如 contains 等

4)问题解决

List<String> list = new ArrayList<String>();

List<String> temp = Arrays.asList(str.split(","));

list.addAll(temp);

等价于

List<String> list = new ArrayList<String>(Arrays.asList(str.split(",")));

5)数组不能直接转为数组,可以通过转为List方式,然后通过Set的构造方法转为Set

new HashSet(Arrays.asList(a));

2、把集合转为数组 list.toArray(T[] a); set.toArray(T[] a);

1)List集合转为数组,采用list.toArray(T[] a);

从他的源码中可以知道,对于传入参数的长度不同对返回值也是有影响的;所以最好这样写:

a = list.toArray(T[] a);

2)Set集合转为数组,采用set.toArray(T[] a);

和上面道理一致。

时间: 2024-10-10 00:11:30

Java 复习 —— 集合与数组的转换的相关文章

Java:集合与数组转换

List,Set转换为数组的方法.toArray函数有两种形式,一种无参数,一种带参数,注意带参数形式中,要指明数组的大小. 程序代码: 1 2 3 4 5 6 7 8 9 public void convertCollectionToArray() { List list = new ArrayList(); Object[] objectArray1 = list.toArray(); String[] array1 = list.toArray(new String[list.size()

Java中集合与数组的切换

在Java开发中常常遇见集合与数组的互相切换,如何实现呢,呵呵呵,很简单: import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.Set; public class Test { /** * 将Set集合转换为数组 * * @author GaoHuanjie */ private static void setT

黑马程序员---java基础--集合、数组、字符串的综合面试题

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 这道题综合了集合,数组,字符串,字符串缓冲区,自动装箱等知识点,你把这道题做会了,java基础你也就学的差不多了. 问题: 自定义一个段由小写字母组成的字符串统计每个字母出现的次数. 例如:abc,输出结果为:a(1)b(1)c(1) 代

JAVA中集合转数组遍历

JAVA中集合的遍历的一种方法时集合转数组遍历,也是就调用Collection中的toArray(). 代码: public static void main(String[] args) {        // TODO Auto-generated method stub        Collection c=new ArrayList();        c.add(new Student("kj",12));        c.add(new Student("uj

Java复习-集合

Java的集合大致分为以下几类 map set list queue set代表无序,不可重复的集合 list代表有序,重复的集合 map代表了映射关系的集合 queue代表的是一种队列集合 从上面的图我们可以看出,访问set集合的时候我们只能根据元素本身来访问,访问list集合的时候可以直接根据元素的索引来访问,如果访问map集合中的元素,可以根据每项的key值访问元素,collection是list map queue的父接口,该接口里定义的方法,可以操作set map queue pack

Java 复习 —— 集合数组帮助类

1.集合帮助类 基本就这些了,关键是要了解 Collections 是集合的帮助类,不是数组的帮助类: 1)生成只读的集合实例对象 Collections.singletonList--用来生成只读 的单一元素的List Collections.singletonMap--用来生成只读 的单Key和Value组成的Map Collections.singleton--用来生成只读 的单一元素的Set Collections.unmodifiableList--用来生成只读 的List Colle

面试题-Java基础-集合和数组

1.Java集合类框架的基本接口有哪些? 集合类接口指定了一组叫做元素的对象.集合类接口的每一种具体的实现类都可以选择以它自己的方式对元素进行保存和排序.有的集合类允许重复的键,有些不允许.Java集合类提供了一套设计良好的支持对一组对象进行操作的接口和类.Java集合类里面最基本的接口有:Collection:代表一组对象,每一个对象都是它的子元素.Set:不包含重复元素的Collection.List:有顺序的collection,并且可以包含重复元素.Map:可以把键(key)映射到值(v

Java 复习 —— 集合

1.类的基本结构 Collection├List│├LinkedList│├ArrayList│└Vector│ └Stack└Set |-HashSet |-TreeSet Map├Hashtable├HashMap└WeakHashMap 2.基本概念 0)Collection : 顶层接口,它都支持一个iterator()的方法,该方法返回一个迭代子,使用该迭代子即可逐一访问Collection中每一个元素.public interface Collection<E> extends I

Java中集合与数组之间的转化

一.集合转化为数组: 采用集合.toArray()方法,根据转化为数组的类型又可以分为: 1.转化为Object[]类型数组 比如:Object[] listArray = list.toArray(); Object[] setArray = set.toArray(); 2.转化为具体类型数组 比如:String[] listArray1 = (String[]) list.toArray(new String[0]) 或者:String[] listArray2 = (String[])