Java中List与Array的变换

Java中List与Array的转换?????? 在编码中,经常会用到两种存储结构之间的转换,而对于存储数据来说,在list和

Java中List与Array的转换

?????? 在编码中,经常会用到两种存储结构之间的转换,而对于存储数据来说,在list和array之间转换也较为频繁,这里整理几种常用方法,但归根到底,还是API里的方法:

?

1. List转换成Array

?

List里有两个方法:

?

Object[] toArray();<T> T[] toArray(T[] a);

?看方法签名也就知道了,两个不同之处就是带有范型的方法具有运行时类型确定的特性,而前一个只能返回Object[],在需要的时候需要强制转换,简单吧!

?

<T> T[] toArray(T[] a);在转换时,如果a的大小小于list的大小,则会建一个新的数组,否则则用a~

?

根据API的说法,toArray()和toArray(new Object[0])效果是一样的。

?

下面来个例子:

public class ListToArray {    public static void main(String[] args) {        ListToArray x = new ListToArray();        List<User> users = new ArrayList<User>();        User user1 = x.new User("zhangsan", 20);        User user2 = x.new User("Lisi", 25);        users.add(user1);        users.add(user2);        User[] userArray = users.toArray(new User[0]);        userArray[0].setName("Modi");        System.out.println(userArray[0]);//Name: Modi; Age: 20        System.out.println(users.get(0));//Name: Modi; Age: 20        List<String> list = new ArrayList<String>();        list.add("fisrt");        list.add("second");        list.toArray();//Object[]        list.toArray(new String[0]);//String[]        String str[] = list.toArray(new String[] {});                String str2[] = new String[1];        list.toArray(str2);        System.err.println(str2[0]);//null                String str3[] = new String[2];        list.toArray(str3);        System.err.println(str3[0]);//first                System.out.println(str.length);    }    public class User {        private String name;        private int    age;        public User(String name, int age) {            this.name = name;            this.age = age;        }        public String getName() {            return name;        }        public void setName(String name) {            this.name = name;        }        public int getAge() {            return age;        }        public void setAge(int age) {            this.age = age;        }        @Override        public String toString() {            return "Name: " + name + "; Age: " + age;        }    }}
?

2. Array转换为List

?

?

public static <T> List<T> asList(T... a) ;

?

给个示例:

public class ArrayToList {    public static void main(String[] args) {       List<String> stooges = Arrays.asList("Larry", "Moe", "Curly");       for(String s:stooges) {           System.out.print(s+"\t");       }       System.out.println();       String[] other = new String[5];       for(int i=75;i>72;i--) {           other[75-i]=(char)i+"";       }       List<String> list = Arrays.asList(other);       for(String s:list) {           System.out.print(s+"\t");       }    }}
?