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

在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<String> list=new ArrayList<String>();
 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 <T> List<T> asList(T... a)
返回一个受指定数组支持的固定大小的列表。(对返回列表的更改会“直接写”到数组。)此方法同 Collection.toArray() 一起,充当了基于数组的 API 与基于 collection 的 API 之间的桥梁。返回的列表是可序列化的,并且实现了 RandomAccess

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

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

参数:
a - 支持列表的数组。
返回:
指定数组的列表视图。

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

      //List转换成数组的操作. Arrays中的asList()或者是Collections中的addAll(...)方法.        String[] array1=new String[]{"aa","bb","cc"};List<String> list1=Arrays.asList(array);list1.add("dd");//这种方法生成的List,无法执行添加,删除操作,下面的操作则无此限制.//Exception in thread "main" java.lang.UnsupportedOperationException
        String[] array2=new String[]{"aa","bb","cc"};List<String> list2=new ArrayList<String>();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<String> list = new ArrayList<String>();
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<String> list1 = Arrays.asList(ss);
39         List<String> list2 = Arrays.asList("AAA","BBB");
40         System.out.println(list1);
41         System.out.println(list2);
42
43
44         //三.Set-->List 直接用List中的构造方法就可以了.
45         //ArrayList(Collection<? extends E> c)
46         //构造一个包含指定 collection 的元素的列表,这些元素是按照该 collection 的迭代器返回它们的顺序排列的。
47         Set<String> set = new HashSet<String>();
48         set.add("11");
49         set.add("11");
50         set.add("33");
51         List<String> list3 = new ArrayList<String>(new HashSet<String>());
52         List<String> list4 = new ArrayList<String>(set);
53
54         //四.List-->Set
55         //用Set集合中的构造方法
56         Set<String> setx = new HashSet<String>(new ArrayList<String>());
57
58         //五.数组-->Set 先把数组用Arrays中的asList变成一个list,然后再转换成Set.
59         String[] strs = {"AA","BB"};
60         Set<String> set2 = new HashSet<String>(Arrays.asList(strs));
61         System.out.println(set2);
62
63         //六.Set-->数组   用Set对象中的toArray()方法.
64         Set<String> set3 = new HashSet<String>(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<String, String> map = new HashMap<String, String>();
72         map.put("YYY", "UUU");
73         map.put("RRR", "TTT");
74         // 将键转化为Set   用keySet()方法.
75         Set<String> mapKeySet = map.keySet();
76
77         // 将值转化为Set
78         Set<String> mapValuesSet = new HashSet<String>(map.values());
79
80         // 将值转化为List
81         List<String> mapValuesList = new ArrayList<String>(map.values());
82     }
83 }

转载于:https://www.cnblogs.com/DreamDrive/p/4304703.html

关于数组集合之间的转换相关推荐

  1. json c语言 数组转字符串数组中,json和字符串/数组/集合的互相转换の神操作总结...

    一:前端字符串转JSON的4种方式 1,eval方式解析,恐怕这是最早的解析方式了. function strToJson(str){ var json = eval('(' + str + ')') ...

  2. json和字符串/数组/集合的互相转换の神操作总结

    一:前端字符串转JSON的4种方式 1,eval方式解析,恐怕这是最早的解析方式了. function strToJson(str){var json = eval('(' + str + ')'); ...

  3. vue将json字符串转换为数组_json字符串、json对象、数组 三者之间的转换

    var Obj = JOSN.parse("cscac"); //将JSON字符串转换成JSON对象 var "cscac" = JSON.stringify( ...

  4. json取交集_JSON 与对象、集合之间的转换的示例

    JSON字符串和java对象的互转[json-lib] 在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级的数据格式比xml效率要高,XML需要很多的 ...

  5. JSON 与 对象 、集合 之间的转换(转)

    JSON字符串和java对象的互转[json-lib] 在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级的数据格式比xml效率要高,XML需要很多的 ...

  6. C# 对象、文件与二进制串(byte数组)之间的转换

    1.关于本文 在使用C#下的TCP(类TcpClient).UDP(类UdpClient)协议传输信息时,都需要将信息转换为byte类型的数组进行发送.本文实现了两种object与byte数组的转换和 ...

  7. json字符串、json对象、数组 三者之间的转换

    json字符串转化成json对象 // jquery的方法 var jsonObj = $.parseJSON(jsonStr) //js 的方法 var jsonObj = JSON.parse(j ...

  8. C# Object与二进制串(byte数组)之间的转换

    话不多说,看连接 这里是连接 [1]: 转换一. [2]: 转换二.

  9. 序列化之对象,字符串,byte数组,XML之间的转换(一)

    工作一年多了,越来越感到自己不能这样一直下去,在最好的青春里面却已经死了.被时间消磨了意志,被工作杀死了精神.我想,我只要活着,我就要去不断的要求自己,不断的去追求更高的山峰. 放眼四周,有趣的灵魂越 ...

最新文章

  1. redhat 6 配置 yum 源
  2. 实验讲解OSPF网络类型
  3. 【优雅代码】深入浅出 妙用Javascript中apply、call、bind
  4. telnet服务器响应慢,交换机s10508 telnet登录后上反应慢
  5. egg风格 什么意思_egg裙什么意思
  6. 云计算将逐渐成为支撑SaaS应用的基础
  7. odoo 密码加密 解析
  8. CTFshow-大牛杯
  9. java中订单流水号_订单流水号的生成
  10. 信捷plc与台达变频器modbus rtu通讯程序
  11. 延迟队列DelayQueue研究
  12. android最新版安装教程,在PC上安装Android系统的图文教程
  13. “似乎不能再叫闵大荒了。”
  14. 电脑远程连接打印机打印
  15. ES异常 : Validation Failed: 1: no requests added
  16. 达里奥:我阅人无数,没有一个成功人士天赋异禀 |【经纬低调分享】
  17. R包 splatter
  18. 分位数回归的实现方法
  19. CSS的再深入2(更新中···)
  20. Odoo产品分析 (三) -- 人力资源板块(6) -- 工资表(2)

热门文章

  1. SAP MM MB21 创建预留界面批量为多个行项目勾选M标记
  2. 长二F发射神十二飞船圆满成功!三名航天员飞向空间站天和核心舱
  3. 申工智能有没有作弊?
  4. 一个没有意义的宇宙我们很难想象
  5. 城市生态的机器人革命
  6. 当超级智能崛起时……
  7. 揭秘毕加索被隐藏千年的“画中画”,神经网络让它重新面世
  8. 一文看透汽车芯片!巨头布局技术路线全解密【附下载】| 智东西内参
  9. 7个小技巧,老板再也无法留我加班了...
  10. 迷惑行为赏析:把 jpg 图片加密后卖了 247 万