天天看點

【集合類】 2 ArrayList中的subList用法陷阱

subList()方法傳回的是原組數的片段,

二者共用相同的位址

,是以,當你操作子序列數組對象時,同樣會修改原始數組的值。我們看個例子

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class ArraylistSort {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList();
        list.add(2);
        list.add(1);
        list.add(5);
        list.add(3);
        list.add(9);
        list.add(10);
        list.add(7);

        List<Integer> sublist = list.subList(2, 4);

        Collections.sort(sublist);
        for (int v : sublist) {
            System.out.print(v + ",");
        }
        System.out.println();
        for (int v : list) {
            System.out.print(v + ",");
        }

    }
}
           

執行結果

3,5,
2,1,3,5,9,10,7,
           

我們往數組依次插入2,1,5,3,9,10,7,然後對子序列進行排序,再列印原始數組,發現

3和5的順序也被改變

了。