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 :方法是將原來位置上的那個給取代了,並將原來位置上對象的返回。