数组转集合
数组转集合,我们容易想到可以用Arrays工具类下面的asList()方法,但是在使用时要注意asList()方法返回的ArrayList对象不是常见的java.util.ArrayList类的实例,它不具有add()和remove()方法,具体情况可看如下操作。
public class ListTest2 {
public static void main(String[] args) {
String[] str = {"死亡之翼","暴风城"};
List<String> list2 = Arrays.asList(str);
System.out.println(list2);
list2.add("hunter");
System.out.println(list2);
}
}
所以,我们不能简单的使用这个方法(如果转换后要进行添加、删除操作),要采取一些措施。
public class ListTest2 {
public static void main(String[] args) {
String[] str = {"死亡之翼","暴风城"};
List<String> list2 = new ArrayList<>(Arrays.asList(str));
System.out.println(list2);
list2.add("hunter");
System.out.println(list2);
}
}
ps:了解数组和集合的区别,以及更多Arrays工具类方法的使用,请移步https://blog.csdn.net/zh137289/article/details/84997848
List<String> list2 = new ArrayList<>(Arrays.asList(str)),这是JDK 1.7 泛型实例化类型具备了自动推断能力,推荐使用,不必写成List<String> list2 = new ArrayList<String>(Arrays.asList(str))。
集合转数组
集合转数组,我们也很容易想到用toArray()方法,当然也没那么简单。
ArrayList提供了两个重载方法。
方法一
public class ListTest2 {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("伊利丹");
list.add("辛达苟萨");
//集合转数组
String[] string = (String[]) list.toArray();
for(String s : string){
System.out.println(s);
}
}
}
所以,可以看出不能将Object[] 转化为String[],转化的话只能是取出每一个元素再转化,但是将元素一个一个取出来再放到数组里面实属麻烦,我们试试第二种。
方法二
public class ListTest2 {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("伊利丹");
list.add("辛达苟萨");
//集合转数组
String[] string = (String[]) list.toArray(new String[list.size()]);
for(String s : string){
System.out.println(s);
}
}
}