Arrays.asList()和subList()方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 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集合的其中一部分视图。

猜你喜欢

转载自blog.csdn.net/newbie0107/article/details/88676193