版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/newbie0107/article/details/88676193
Arrays.asList和subList方法
Arrays.asList
该方法是将数组转化为List集合。
public class Client {
public static void main(String[] args) {
Integer[] arr = {1,2,3,4};
List<Integer> list = Arrays.asList(arr);
print(list);
arr[0] = 88;
print(list);
list.set(1,100);
for(Integer i : arr)
System.out.print(i + "\t");
}
private static void print(List list){
for(Object o : list)
System.out.print(o + "\t");
System.out.println();
}
}
运行结果:
1 2 3 4
88 2 3 4
88 100 3 4
可以看出该方法将数组与列表链接起来,当更新其中之一时,另一个自动更新。
另外该方法不支持add,remove操作。该方法对基本数据类型不适用。
public class Client {
public static void main(String[] args) {
int[] arr = {1,2,3,4};
List list = Arrays.asList(arr);
print(list);
}
}
运行结果并非我们所预期的那样(1 2 3 4),我们将print函数改变一下:
private static void print(List list){
int[] arr = (int[]) list.get(0);
for(Object o : arr)
System.out.print(o + "\t");
System.out.println();
}
运行结果:
1 2 3 4
subList
public class Client {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("e");
List<String> newList = list.subList(1,3);
newList.add("f");
print(list);
newList.remove(1);
print(list);
}
private static void print(List list){
for (Object o : list)
System.out.print(o + "\t");
System.out.println();
}
}
运行结果:
a b c f d e
a b f d e
可以看出通过改变subList生成的元素,原List元素也发生了改变,我们可以得知该方法其实是返回一个List集合的其中一部分视图。