1. 程式人生 > >記錄一下List集合的小知識(打亂排序)

記錄一下List集合的小知識(打亂排序)

今天專案中有一個需求是要對查詢到的集合的結果集順序打亂之後在展示,每次展示出來的都要不一樣

當時都比較蒙,想的是對時間進行取模,比較麻煩就在網上找了一下,原來可以這麼簡單,以前都沒有用過這個方法。

把你的結果集轉成list集合之後,list中就有一個打亂排序的方法,就是Collections.shuffle(list),這樣的話每次展示出來的都是隨機的。

//演示一下打亂排序
public static void main(String[] args) {
        List<String> User = new ArrayList<String>();
        User.add("1");
        User.add("2");
        User.add("3");
        User.add("4");
        User.add("5");
        Collections.shuffle(User);
        System.out.println(User);
    }

記一下list的別的常用的操作

排序:Collections.sort();

查詢:Collections.binarySearch();

打亂排序:Collections.shuffle();

反轉集合中元素的順序:reverse();

替換集合中的某個元素, 如果該元素存在返回true:replaceAll(List<T> list, T oldVal, T newVal);

集合中的元素後移distance個位置, 後面遮蓋住的位置移動到前面; 底層數量大於100個通過3次reverse實現, 通過排序演算法實現:rotate(List<T> list, int distance); 


將src中的元素全部複製到dest中, 並且覆蓋索引;(src的儲存大小必須小於dest):copy(List<? super T> dest, List<? extends T> src); 

交換集合中指定索引位置的元素:swap(List<?> list, int i, int j); 

  • nCopies(int n, T o); 
    // 返回大小為n的List集合, 其中所有的元素內容指向o
  • enumeration(final Collection<T> c); 
    // 根據集合生成一箇舊版列舉
  • list(Enumeration<T> e); 
    // 舊版列舉生成ArrayList
  • fill(List<? super T> list, T obj); 
    // obj替換集合中所有的元素