文档章节

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

learn_more
 learn_more
发布于 2015/08/19 13:35
字数 556
阅读 88
收藏 5

前言:

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

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);

和上面道理一致。


© 著作权归作者所有

learn_more
粉丝 93
博文 240
码字总数 210196
作品 0
深圳
程序员
私信 提问
Scala学习(三)数组相关操作

1.定长数组 如果你需要一个长度不变的始祖,可以使用Scala中的Array。例如: 2.变长数组:数组缓冲 对于那种长度有变化的数组,Java有ArrayList,C++有vector。Scala中有等效的数据结构Array...

我爱春天的毛毛雨
2018/09/30
0
0
JAVA基础再回首(三十)——JAVA基础再回首完美结束,感概万千!

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m366917/article/details/52724939 JAVA基础再回首(三十)——JAVA基础再回首完美结束,感概万千! 经过了几...

Aduroidpc
2016/10/02
0
0
关于 Java Collections API 您可能不知道的 5 件事

对于很多 Java 开发人员来说,Java Collections API 是标准 Java 数组及其所有缺点的一个非常需要的替代品。将 Collections 主要与 联系到一起本身没有错,但是对于那些有探索精神的人来说,...

红薯
2010/05/26
487
1
kotlin学习笔记-异常好玩的list集合总结

不积跬步无以至千里,不积小流无以成江海 先看看Kotlin中for循环的遍历 kotlin和Java中的集合工具类 Java中集合及其工具类 Kotlin中Java中集合及其工具类 List MutableList Set MutableSet Ma...

codeGoogle
2018/07/16
0
0
Scala笔记整理(二):Scala数据结构—数组、map与tuple

[TOC] 数组 定长数组 如果你需要一个长度不变的数组,可以用Scala中的Array。例如: 在JVM中,Scala的Array以Java数组方式实现。示例中的数组在JVM中的类型为java.lang.String[]。Int、Doubl...

xpleaf
2018/04/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

redis 消息队列实现

方式一:通过list的阻塞读取命令,blpop或者brpop 消费者 public class Consumer extends DemoApplicationTests{ @Test public void consume(){ int timeout = 0;//永不超......

小海bug
15分钟前
0
0
如何把微信语音汇总成一个MP3文件?

本篇以苹果手机为例,安卓手机也可类似。 第一步,安装同步助手 同步助手是一款在电脑上安装,可以保存手机上的内容的软件。支持把微信的聊天历史内容导出。甚至支持筛选语音文件按顺序导出—...

吴伟祥
21分钟前
1
0
用ffsend使用Firefox Send

导读 ffsend 是 Firefox Send 的命令行客户端。本文将展示 Firefox Send 和 ffsend 如何工作。还会详细介绍如何在 Fedora 中安装和使用它。 ffsend 是 Firefox Send 的命令行客户端。本文将展...

问题终结者
21分钟前
0
0
用ffsend使用Firefox Send

ffsend 是 Firefox Send 的命令行客户端。本文将展示 Firefox Send 和 ffsend 如何工作。还会详细介绍如何在 Fedora 中安装和使用它。 ffsend 是 Firefox Send 的命令行客户端。本文将展示 ...

Linux就该这么学
33分钟前
0
0
分布式Session的实现方式

JWT Token 使用 JWT Token 储存用户身份,然后再从数据库或者 cache 中获取其他的信息。这样无论请求分配到哪个服务器都无所谓。 Tomcat + Redis 在 tomcat 的配置文件中配置: <Valve class...

禅明
40分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部