关于数组集合之间的转换
2015-02-28 09:29
204 查看
开发中经常用到数组和集合之间的转换和集合与集合之间的转换.
在JDK中有现成的API中供我们使用.
1.首先是数组和集合之间的转换:
输出结果:
关于打印List对象直接出的是List对象中的内容.
继承关系图如下:
ArrayList中继承了AbstractList, AbstractList又继承了AbstractCollection
在AbstractCollection中进行了toString()方法的重写
所以直接打印list对象打印出的是list的内容.
想要直接打印数组中的内容可以进行循环遍历,也可以用Arrays.asList(array)这个方法.
参看JAVA的API:
返回一个受指定数组支持的固定大小的列表。(对返回列表的更改会“直接写”到数组。)此方法同
此方法还提供了一个创建固定长度的列表的便捷方法,该列表被初始化为包含多个元素:
2.java集合转数组,有两种方法
3.下面是集合中各个集合对象转换的小总结
在JDK中有现成的API中供我们使用.
1.首先是数组和集合之间的转换:
import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class CollectionChange { public static void main(String[] args) { List<String> list=new ArrayList<String>(); list.add("aa"); list.add("bb"); list.add("cc"); System.out.println(list);//输出:[aa, bb, cc] //为什么list对象打印出的是正常的数组形式呢?没有看到ArrayList中重写toString()方法? //原因是:ArrayList的父类AbstractList的父类AbstractCollection里面有实现toString() //见代码外边的分析 //直接打印数组对象 打印出的是数组对象对应的哈希编码 String[] array = list.toArray(new String[list.size()]); System.out.println(array); //想要打印出数组对象中的数组元素用下面的方法 //详细见代码外面的分析 System.out.println(Arrays.asList(array)); } }
输出结果:
[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.下面是集合中各个集合对象转换的小总结
package cn.itcast.collectionChange; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; public class CollectionChange2 { public static void main(String[] args) { //一.List-->数组 用到了list对象的toArray()方法(返回Object数组 ). List<String> list = new ArrayList<String>(); list.add("tom"); list.add("Jerval"); list.add("WeiSi"); //①对应的Object数组. Object[] objects = list.toArray();//返回Object数组 //打印数组中的元素. System.out.println("objects:"+Arrays.toString(objects)); //②变成相应的String数组.(方式一)list对象的toArray()方法. String[] strings1 = new String[list.size()]; list.toArray(strings1);//将转化后的数组放入已经创建好的对象中 System.out.println("strings1:"+Arrays.toString(strings1)); //③变成相应的String数组.(方式二)list对象的toArray(T[])方法. //下面的toArray(new String[0])中仅仅是参数要传递一个数组类型.数组要初始化,中括号重要有一个数组. //注意,toArray(new Object[0]) 和 toArray() 在功能上是相同的。 String[] strings2 = list.toArray(new String[0]);//将转化后的数组赋给新对象 System.out.println("strings2:"+Arrays.toString(strings2)); //二.数组-->List 数组工具类Arrays中的asList()方法. String[] ss = {"JJ","KK"}; List<String> list1 = Arrays.asList(ss); List<String> list2 = Arrays.asList("AAA","BBB"); System.out.println(list1); System.out.println(list2); //三.Set-->List 直接用List中的构造方法就可以了. //ArrayList(Collection<? extends E> c) //构造一个包含指定 collection 的元素的列表,这些元素是按照该 collection 的迭代器返回它们的顺序排列的。 Set<String> set = new HashSet<String>(); set.add("11"); set.add("11"); set.add("33"); List<String> list3 = new ArrayList<String>(new HashSet<String>()); List<String> list4 = new ArrayList<String>(set); //四.List-->Set //用Set集合中的构造方法 Set<String> setx = new HashSet<String>(new ArrayList<String>()); //五.数组-->Set 先把数组用Arrays中的asList变成一个list,然后再转换成Set. String[] strs = {"AA","BB"}; Set<String> set2 = new HashSet<String>(Arrays.asList(strs)); System.out.println(set2); //六.Set-->数组 用Set对象中的toArray()方法. Set<String> set3 = new HashSet<String>(Arrays.asList("PP","OO")); String[] strSet = new String[set3.size()]; set3.toArray(strSet); System.out.println(Arrays.toString(strSet)); //七.Map操作 Map<String, String> map = new HashMap<String, String>(); map.put("YYY", "UUU"); map.put("RRR", "TTT"); // 将键转化为Set 用keySet()方法. Set<String> mapKeySet = map.keySet(); // 将值转化为Set Set<String> mapValuesSet = new HashSet<String>(map.values()); // 将值转化为List List<String> mapValuesList = new ArrayList<String>(map.values()); } }
相关文章推荐
- 关于PHP在数组对象与JSON数据之间的转换问题(编码问题)
- [java]关于数组和List之间相互转换的方法
- JAVA里面关于byte数组和String之间的转换问题
- 集合和数组之间的转换(面试题)
- [原]深入 JAVA里面关于byte数组和String之间的转换问题
- 关于数组和List之间相互转换的方法
- 关于数组转换为list的集合的问题
- 数组和集合之间的转换
- JAVA里面关于byte数组和String之间的转换问题
- 每日一问(常用的集合接口和类有哪些【二】)—ArrayList类和数组之间的转换
- 关于数组和List之间相互转换的方法
- 数组与集合之间的转换
- 关于数组和List之间相互转换的方法
- 深入 JAVA里面关于byte数组和String之间的转换问题
- [java]关于数组和List之间相互转换的方法
- 关于数组和List之间相互转换的方法
- 关于数组和List之间相互转换的方法
- 关于数组和list之间相互转换的方法
- [原]深入 JAVA里面关于byte数组和String之间的转换问题
- 深入 JAVA里面关于byte数组和String之间的转换问题