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

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

1、集合与数组之间的转换

集合中如List和Set,都和数组有着高度的相似性,既然如此,实际上集合转数组也是情理之中的事情。
1007017-20180619093629759-1627382618.png

1.1 集合转数组 toArray

看几个常用的集合类,如上图继承关系图,可以看到他们都集成了一个抽象类AbstractCollection,这个类中就实现了Collection接口的两个方法:
  • toArray ( )
  • toArray ( T[ ] a )
 
前者的返回值是一个Object的数组,Object[],这个数组是不可以进行强制数据类型转换的,如下:
List
pod = new ArrayList
(); for(int i = 0; i < 5; i++){  pod.add(i);}Integer[] t=(Integer[])pod.toArray();
7
 
1
List
pod = new ArrayList
();
2
 
3
for(int i = 0; i < 5; i++){
4
  pod.add(i);
5
}
6
 
7
Integer[] t=(Integer[])pod.toArray();
结果就是报错:
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.Integer;
所以像如上情况,就应该使用第二种方法:
  • toArray(T[ ] a) 
  • 如果数组a的长度足够放入整个集合的数据,那么所有数据会放入到数组a当中
  • 如果数组a的长度不够,那么会把所有数据放入到一个新的数组中返回
List
pod=new ArrayList
();for(int i=0;i<5;i++){ pod.add(i);}//第一种Integer[] t=new Integer[pod.size()];pod.toArray(t);//第二种Integer[] t3=new Integer[1];Integer[] t2=pod.toArray(t3);
13
 
1
List
pod=new ArrayList
();
2
 
3
for(int i=0;i<5;i++){
4
   pod.add(i);
5
}
6
 
7
//第一种
8
Integer[] t=new Integer[pod.size()];
9
pod.toArray(t);
10
 
11
//第二种
12
Integer[] t3=new Integer[1];
13
Integer[] t2=pod.toArray(t3);
即以上的 t 和 t2 都是我们期望得到的数组。

1.2 数组转集合 asList

数组转集合,就要利用到数组的工具类Arrays了,该类中定义了数组转为List的一个方法:
  • asList(T... a)
  • 返回一个装载了数组a中所有数据的固定长度的List
public static void main(String[] args) {    String[] pod = new String[]{"haha", "xixi", "heihei"};    List
list = Arrays.asList(pod); for (String bean : list) { System.out.println(bean); }}
8
 
1
public static void main(String[] args) {
2
   String[] pod = new String[]{
"haha", "xixi", "heihei"};
3
   List
list = Arrays.asList(pod);
4
 
5
   for (String bean : list) {
6
       System.out.println(bean);
7
   }
8
}
如果希望转换为长度可变的List,则利用ArrayList构造方法:
1007017-20180619093630279-1149590927.png
public static void main(String[] args) {    String[] pod = new String[]{"haha", "xixi", "heihei"};    List
list = Arrays.asList(pod); List
newList = new ArrayList
(list); for (String bean : newList) { System.out.println(bean); }}
9
 
1
public static void main(String[] args) {
2
   String[] pod = new String[]{
"haha", "xixi", "heihei"};
3
   List
list = Arrays.asList(pod);
4
   List
newList = new ArrayList
(list);
5
 
6
   for (String bean : newList) {
7
       System.out.println(bean);
8
   }
9
}

2、集合与集合之间的转换 addAll

刚才我们提到了集合类的继承关系图,在抽象类AbstractCollection,还实现了Collection接口中的一个方法,叫addAll,具体实现类对该方法多少进行了重写:
1007017-20180619093630606-1279432205.png
 
这里返回的布尔值是指,如果List集合对象由于调用addAll方法而发生更改,则返回true
如下示例,TreeSet转换为List类型:
public static void main(String[] args) {    TreeSet
pod = new TreeSet
(); pod.add(1); pod.add(3); pod.add(2); List
list = new ArrayList
(); list.addAll(pod); for (Integer bean : list) { System.out.println(bean); }}
x
 
1
public static void main(String[] args) {
2
   TreeSet
pod = new TreeSet
();
3
   pod.add(1);
4
   pod.add(3);
5
   pod.add(2);
6
   
7
   List
list = new ArrayList
();
8
   list.addAll(pod);
9
 
10
   for (Integer bean : list) {
11
       System.out.println(bean);
12
   }
13
}

3、参考链接

转载于:https://www.cnblogs.com/deng-cc/p/8072930.html

你可能感兴趣的文章
《A First Course in Probability》-chaper3-条件概率和独立性-P(·|F)是概率
查看>>
学习Logistic Regression的笔记与理解(转)
查看>>
ORM(Object Relation Mapping)
查看>>
进程和线程
查看>>
有没有让你相见恨晚的(高考)教辅书?
查看>>
BZOJ 2763: [JLOI2011]飞行路线 【分层图模板】
查看>>
ios UIWebView 在开发中加载文件
查看>>
《大学之路》读后感(2)
查看>>
Spring Boot自定义配置与加载
查看>>
小微博1
查看>>
Ubuntu16.04安装MySQL+JDBC
查看>>
字符串游戏(strgame)——博弈
查看>>
企业邮箱服务优化软件
查看>>
归并排序
查看>>
Unix Family Tree
查看>>
linux 命令行更新sdk
查看>>
apache httpd.conf 参数详解
查看>>
Angular系列------AngularJS入门教程:导言和准备(转载)
查看>>
sql语句大全
查看>>
bat执行python脚本,执行多条命令
查看>>