一個關於Set 和List的小測試

import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;

public class Main {

    public static void main(String[] aa) {
        Set<Integer> set = new TreeSet<Integer>();
        List<Integer> list = new ArrayList<Integer>();
        for (int i = -3; i < 3; i++) {
            set.add(i);
            list.add(i);
        }
        for (int i = 0; i < 3; i++) {
            set.remove(i);
            list.remove(i);
        }
        System.out.println(set + " " + list);
    }
}

 答案是:
[-3, -2, -1] [-2, 0, 2]

Set倒是容易理解,List卻忘記了移出之後右邊的數據會往左移動。

這是個很好的題目,一個是要明白不同的數據結構對數據的存儲方式,一個是理解java的自動裝箱機制,再一個就是知道兩個數據結構的remove方法參數是不同的,set的remove移出的自動裝箱之後的對象,而list的remove方法參數是int類型。
教訓,一定要仔細。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章