public class Test { public static void main(String[] args) { long[] data = {4, 3, 1, 8, 6, 9, 2}; List list = new ArrayList<>(); for (long key : data) { list.add(key); } System.out.println(list); //先升序 // Collections.sort(list); // System.out.println(list); //再反轉 Collections.reverse(list); System.out.println(list); }java
}排序
今天無心中搜了一下Collections.reverse這個方法,結果發現有些人對它的誤解蠻深的。下面是一個有百萬訪問量博主寫的,reverse能夠對指定列表進行降序排序,但是本身輸出的結果都不是降序。 這裏寫圖片描述圖片
確實,使用Collections.reverse結合必定方法能夠實現對list集合降序排序,可是直接使用Collections.reverse(list)這種方式來降序是錯誤的。 reverse的意思是反轉,而不是降序。只是將list集合原來的順序反轉了一下,反轉並不意味着降序了。因此要想實現降序,能夠先對集合進行升序,而後再反轉,這樣就降序了。 舉個例子:io
import java.util.*;class
public class Test { private static Map<Integer, String> map = new HashMap<Integer, String>();import
public static void main(String[] args) { long[] data = {1506326821000l, 1506327060000l, 1506326880000l, 1506327000000l, 1506326940000l, 1506326760000l, 1506326700000l}; List list = new ArrayList<>(); for (long key : data) { list.add(key); } System.out.println(list); //先升序 Collections.sort(list); System.out.println(list); //再反轉 Collections.reverse(list); System.out.println(list); } } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 輸出:List
[1506326821000, 1506327060000, 1506326880000, 1506327000000, 1506326940000, 1506326760000, 1506326700000] [1506326700000, 1506326760000, 1506326821000, 1506326880000, 1506326940000, 1506327000000, 1506327060000] [1506327060000, 1506327000000, 1506326940000, 1506326880000, 1506326821000, 1506326760000, 150map