博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于数组集合之间的转换
阅读量:5923 次
发布时间:2019-06-19

本文共 4865 字,大约阅读时间需要 16 分钟。

开发中经常用到数组和集合之间的转换和集合与集合之间的转换.

在JDK中有现成的API中供我们使用.

1.首先是数组和集合之间的转换:

 

1 import java.util.ArrayList; 2 import java.util.Arrays; 3 import java.util.List; 4  5 public class CollectionChange { 6     public static void main(String[] args) { 7         List
list=new ArrayList
(); 8 list.add("aa"); 9 list.add("bb");10 list.add("cc");11 System.out.println(list);//输出:[aa, bb, cc]12 //为什么list对象打印出的是正常的数组形式呢?没有看到ArrayList中重写toString()方法?13 //原因是:ArrayList的父类AbstractList的父类AbstractCollection里面有实现toString()14 //见代码外边的分析 15 16 //直接打印数组对象 打印出的是数组对象对应的哈希编码17 String[] array = list.toArray(new String[list.size()]);18 System.out.println(array);19 20 //想要打印出数组对象中的数组元素用下面的方法21 //详细见代码外面的分析22 System.out.println(Arrays.asList(array));23 }24 }

输出结果:

[aa, bb, cc][Ljava.lang.String;@e5bbd6[aa, bb, cc]

 关于打印List对象直接出的是List对象中的内容.

 继承关系图如下:

ArrayList中继承了AbstractList, AbstractList又继承了AbstractCollection

在AbstractCollection中进行了toString()方法的重写

所以直接打印list对象打印出的是list的内容.

 

想要直接打印数组中的内容可以进行循环遍历,也可以用Arrays.asList(array)这个方法.

参看JAVA的API:

asList

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

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

List
stooges = Arrays.asList("Larry", "Moe", "Curly"); 参数:
a - 支持列表的数组。
返回:
指定数组的列表视图。

2.java集合转数组,有两种方法

  //List转换成数组的操作. Arrays中的asList()或者是Collections中的addAll(...)方法.         String[] array1=new String[]{"aa","bb","cc"};        List
list1=Arrays.asList(array); list1.add("dd"); //这种方法生成的List,无法执行添加,删除操作,下面的操作则无此限制. //Exception in thread "main" java.lang.UnsupportedOperationException String[] array2=new String[]{"aa","bb","cc"}; List
list2=new ArrayList
(); Collections.addAll(list2,array2); list2.add("dd");

 

 

3.下面是集合中各个集合对象转换的小总结

1 package cn.itcast.collectionChange; 2  3 import java.util.ArrayList; 4 import java.util.Arrays; 5 import java.util.HashMap; 6 import java.util.HashSet; 7 import java.util.List; 8 import java.util.Map; 9 import java.util.Set;10 11 public class CollectionChange2 {12     public static void main(String[] args) {13         //一.List-->数组    用到了list对象的toArray()方法(返回Object数组 ).14         List
list = new ArrayList
(); 15 list.add("tom"); 16 list.add("Jerval"); 17 list.add("WeiSi"); 18 19 //①对应的Object数组.20 Object[] objects = list.toArray();//返回Object数组 21 //打印数组中的元素.22 System.out.println("objects:"+Arrays.toString(objects)); 23 24 //②变成相应的String数组.(方式一)list对象的toArray()方法.25 String[] strings1 = new String[list.size()]; 26 list.toArray(strings1);//将转化后的数组放入已经创建好的对象中 27 System.out.println("strings1:"+Arrays.toString(strings1)); 28 29 //③变成相应的String数组.(方式二)list对象的toArray(T[])方法.30 //下面的toArray(new String[0])中仅仅是参数要传递一个数组类型.数组要初始化,中括号重要有一个数组.31 //注意,toArray(new Object[0]) 和 toArray() 在功能上是相同的。32 String[] strings2 = list.toArray(new String[0]);//将转化后的数组赋给新对象 33 System.out.println("strings2:"+Arrays.toString(strings2)); 34 35 36 //二.数组-->List 数组工具类Arrays中的asList()方法. 37 String[] ss = {"JJ","KK"}; 38 List
list1 = Arrays.asList(ss); 39 List
list2 = Arrays.asList("AAA","BBB"); 40 System.out.println(list1); 41 System.out.println(list2); 42 43 44 //三.Set-->List 直接用List中的构造方法就可以了.45 //ArrayList(Collection
c) 46 //构造一个包含指定 collection 的元素的列表,这些元素是按照该 collection 的迭代器返回它们的顺序排列的。47 Set
set = new HashSet
();48 set.add("11");49 set.add("11");50 set.add("33");51 List
list3 = new ArrayList
(new HashSet
()); 52 List
list4 = new ArrayList
(set); 53 54 //四.List-->Set 55 //用Set集合中的构造方法56 Set
setx = new HashSet
(new ArrayList
()); 57 58 //五.数组-->Set 先把数组用Arrays中的asList变成一个list,然后再转换成Set. 59 String[] strs = {"AA","BB"}; 60 Set
set2 = new HashSet
(Arrays.asList(strs)); 61 System.out.println(set2); 62 63 //六.Set-->数组 用Set对象中的toArray()方法.64 Set
set3 = new HashSet
(Arrays.asList("PP","OO")); 65 66 String[] strSet = new String[set3.size()]; 67 set3.toArray(strSet); 68 System.out.println(Arrays.toString(strSet)); 69 70 //七.Map操作 71 Map
map = new HashMap
(); 72 map.put("YYY", "UUU"); 73 map.put("RRR", "TTT"); 74 // 将键转化为Set 用keySet()方法. 75 Set
mapKeySet = map.keySet(); 76 77 // 将值转化为Set 78 Set
mapValuesSet = new HashSet
(map.values()); 79 80 // 将值转化为List 81 List
mapValuesList = new ArrayList
(map.values()); 82 }83 }

 

转载地址:http://yhxvx.baihongyu.com/

你可能感兴趣的文章
使用python脚本,调用post方式监控服务器状态
查看>>
shell脚本--for循环打印下面这句话中字母数不大于6的单词
查看>>
proxmox 3.0通过USB安装到服务器上
查看>>
第二集 be动词 一般动词的现在时
查看>>
NTP服务及时间同步(CentOS6.x)
查看>>
httpd添加虚拟主机
查看>>
我的友情链接
查看>>
一个网络工程师至少要的做实验
查看>>
复制数组
查看>>
创建 OpenStack云主机 [六]
查看>>
RHEL环境搭建--Nginx|Tomcat|Java|Dubbo|RabbitMQ|Redis|Nexus|MySQL
查看>>
简历模板
查看>>
mysql用户的管理
查看>>
Guava retryer
查看>>
Java小知识
查看>>
Linux 内存测试工具memtester
查看>>
EIGRP配置实例
查看>>
PHP 正则判定中文 UTF-8 ;GBK
查看>>
构建高可用服务器之二 Keepalive参数详解
查看>>
内存管理高级1---转自光远的iOS
查看>>