总结:
1. 把一般数组用Array.asList转为List
2. 转为的List更新时,原来的数组也会跟着更新
3. 基本类型数组转为的List更新时,会报错,而对象类型的不会
<span style="font-size:14px;">package testJava;
import sun.plugin.javascript.navig.Array;
import java.util.Arrays;
import java.util.List;
/**
* Created by cfxd000 on 2016/10/25.
*/
public class testAsList {
public static void main(String[] args) {
int[] a_int = {1, 2, 3, 4};
List a_list = Arrays.asList(a_int);
/* 预期输出应该是1,2,3,4,但实际上输出的仅仅是一个引用, 这里它把a_int当成了一个元素 */
for (Object obj : a_list) {
System.out.println(obj);
}
/*因为数组和列表链接在一起,所有要获取出来才能用*/
int[] a_list_obj = (int[]) a_list.get(0);
for (Object obj : a_list_obj){
System.out.println(obj);
}
/*如果传进去的是对象,能直接使用*/
Integer[] b_Integer = new Integer[] { 1, 2, 3, 4 };
List b_list = Arrays.asList(b_Integer);
for (Object obj:b_list) {
System.out.println("blist="+obj);
}
/*例子2,传进的是user对象*/
User[] b_Users = new User[]{new User(1),new User(2),new User(3),new User(4)};
List b_Ulist = Arrays.asList(b_Users);
for (Object obj:b_Ulist) {
User temp = (User) obj;
System.out.println(temp.getId());
}
/*当更新数组或者asList之后的List,另一个将自动获得更新,
*但是基本类型数组aslist之后不能的值,不能更新,否则会报错
*/
a_int[0] = 999;
System.out.println("a_list更新后:"+a_int[0]);
for (Object obj : a_list_obj){
System.out.println(obj);
}
b_Integer[0] = 222;
System.out.println("b_Integer更新后:"+b_Integer[0]);
for (Object obj : b_Integer){
System.out.println(obj);
}
b_list.set(0,123);
System.out.println("b_Integer更新后:"+b_Integer[0]);
for (Object obj : b_Integer){
System.out.println(obj);
}
}
}
class User{
private int id;
public User(int id) {
this.id = id;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}</span>