java中List集合中任意兩個位置的數據互相調換

java中List集合中任意兩個位置的數據互相調換


在需要做list集合中任意兩個位置的數據做相互調換位置的時候,起初想用add,然後再刪除相當的元素,後來發現這樣做會存在一些問題,看了api發現 java有現成方法到做這個兩個元素的交換如下:

Collections.swap(list,loc1,loc2);

這樣就可以實現兩個元素的交換,很簡單。然後我看了下源碼發現是這樣的:

public static void swap(List<?> list, int i, int j) {
        final List l = list;
        l.set(i, l.set(j, l.get(i)));
    }

然後就需要了解一下List中add和 set這兩個方法的區別了:

public class TestListSet {
    public static void main(String[] args) {
        List l1 = new LinkedList();
        for (int i = 0; i <= 5; i++) {
            l1.add("a" + i);
        }
        System.out.println(l1);
        l1.add(3, "a100");
        System.out.println(l1);
        String b = (String) l1.set(3, "a200");
        System.out.println(b);
        System.out.println(l1);

    }

運行結果爲:
在這裏插入圖片描述
這樣就可以發很明顯的發現List的add和 set方法的區別了;

add:方法是在某個指定的位置加上某個對象,並將原來的位置的那個對象向後擠了一格。
set :方法是將原來位置上的那個給取代了,並將原來位置上對象的返回。

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