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"); } }}? 