Java 集合与数组相互转换
一、数组转集合
//数组转集合
String [] strs = {"12", "13", "14"};
List<String> stringList = Arrays.asList(strs);
// stringList.add("16"); 数组转成的集合,不可添加
//asList的返回对象是一个ArrayList,
//此处的ArrayList是Arrays的内部类.没有add()方法
System.out.println(stringList.toString());
for (String str : stringList) {
System.out.println(str);
}
二、集合转数组
1、ArrayList的toArray,toArray有两个重载的方法:
(1)list.toArray();
//将list直接转为Object[] 数组;
ArrayList<String> list=new ArrayList<String>();
for (int i = 0; i < 10; i++) {
list.add(""+i);
}
String[] array= (String[]) list.toArray();
运行报错:
不能将Object[] 转化为String[],转化的话只能是取出每一个元素再转化。java中的强制类型转换只是针对单个对象的,想要偷懒将整个数组转换成另外一种类型的数组是不行的,这和数组初始化时需要一个个来也是类似的。
//单个转化
Object[] arr = list.toArray();
for (int i = 0; i < arr.length; i++) {
String e = (String) arr[i];
System.out.println(e);
}
(2)list.toArray(T[] a);
String[] array =new String[list.size()];
list.toArray(array);
//集合转数组
ArrayList<String> strings = new ArrayList<String>();
for (int i=0; i<10; i++) {
strings.add(String.valueOf(i));
}
String[] strs = strings.toArray(new String[strings.size()]);
2、使用set 去重转换
Set<String> set = new HashSet<String>();
for (int i = 0; i < object.size(); i++) {
set.add(object.get(i).toString());//object里有重复的数据,采用set去除重复的数据
}
String[] strs = new String[set.size()];
//Set-->数组
set.toArray(str);
参考:https://www.cnblogs.com/goloving/p/7693388.html