常用類-集合-Collections

概述

Collections是專用於集合操作的工具類,可對List,SetMap進行排序、線程安全化轉換等操作。

Collections中常用的方法

對集合元素的基本操作

/* 將指定的多個數據添加至指定集合。
   如果集合因調用添加而改變,返回true. */
public static <T> boolean addAll(Collection<? super T> c,T... elements){}

例:

@Test
public void test(){
    ArrayList<String> list = new ArrayList<>();
    list.add("Tony");
    list.add("Peter");
    list.add("Jerry");
    Collections.addAll(list,"Thor","John","Tom");
    for(int index = 0;index < list.size();index++){
        System.out.print(list.get(index)+" ");
    }    
}
/* 返回系統認爲的自然排序最大值 */
public static <T extends Object&Comparable<? super T>> max(Collection<? extends T> coll){} 

/* 返回系統認爲的定製排序最大值 */
public static <T> T max(Collection<? extends T> coll,Comparator<? super T> comp){}

/* 返回系統認爲的自然排序最小值 */
public static <T extends Object&Comparable<? super T>> min(Collection<? extends T> coll){} 

/* 返回系統認爲的定製排序最小值 */
public static <T> T min(Collection<? extends T> coll,Comparator<? super T> comp){}
/* 將List集合中所有與指定oldVal相等的元素的值替換爲newVal. 
   如果List集合中包含至少1個元素與指定oldVal相等,返回true. */
public static <T> boolean replaceAll(List<T> list,T oldVal,T newVal){}

例:

@Test
public void test(){
    ArrayList<String> list = new ArrayList<>();
    list.add("Tony");
    list.add("Peter");
    list.add("Tony");
    list.add("Jerry");
    list.add("Tony");
    Collections.replaceAll(list,"Tony","Tony Stark");
    System.out.println(list);//[Tony Stark, Peter, Tony Stark, Jerry, Tony Stark]
}
/* 互換List集合中指定i和j索引位置的元素值 */
static void swap(List<?> list,int i,int j){}

例:

@Test
public void test(){
    ArrayList<String> list = new ArrayList<>();
    list.add("Tony");
    list.add("Peter");
    list.add("Jerry");
    Collections.swap(list,1,2);
    System.out.println(list);//[Tony, Jerry, Peter]
}
/* 返回List集合中最先出現的指定 子List 所在的索引。
   如果List集合中不存在指定的 子List,返回-1.*/
public static indexOfSubList(List<?> source,List<?> target){}

/* 返回List集合中最後出現的指定 子List 所在的索引。
   如果List集合中不存在指定的 子List,返回-1.*/
public static lastIndexOfSubList(List<?> source,List<?> target){}

例:

@Test
public void test(){
    ArrayList<Integer> source = new ArrayList<>();
    source.add(123);//<-
    source.add(234);
    source.add(345);//<-
    source.add(456);
    source.add(789);
    source.add(234);
    source.add(123);
    source.add(567);
    source.add(123);//<-
    source.add(234);
    source.add(345);//<-
    source.add(234);
    
    ArrayList<Integer> target_1 = new ArrayList<>();
    target_1.add(123);
    target_1.add(234);
    target_1.add(345);
    
    ArrayList<Integer> target_2 = new ArrayList<>();
    target_2.add(123);
    target_2.add(234);
    target_2.add(345);
    target_2.add(567);
    
    System.out.println(Collections.indexOfSubList(source,target_1));     //0
    System.out.println(Collections.lastIndexOfSubList(source,target_1)); //8
    System.out.println(Collections.indexOfSubList(source,target_2));     //-1
    System.out.println(Collections.lastIndexOfSubList(source,target_2)); //-1
}
/* 返回Collection集合中指定數據(Object o)出現的次數 */
public static frequency(Collection<?> c,Object o){}

例:

@Test
public void test(){
    ArrayList<String> list = new ArrayList<>();
    list.add("Tony");
    list.add("Peter");
    list.add("Tony");
    list.add("Jerry");
    list.add("Tony");
    list.add("Tony");
    System.out.println("Frequency of name Tony is "+Collections.frequency(list,"Tony")); //4
    System.out.println("Frequency of name John is "+Collections.frequency(list,"John")); //0
}
/* 複製指定List集合src的所有元素至指定List集合dest.
   必須保證dest.size() >= src.size(),否則將出現異常。 */
static <T> void copy(List<? super T> dest,List<? extends T> src){}

例:

@Test
public void test(){
    List<String> src = new ArrayList<>();
    src.add("Tony");
    src.add("Peter");
    src.add("Tony");
    src.add("Jerry");
    List<String> dest = Arrays.asList(new String[src.size()]);
    Collections.copy(dest,src);
    System.out.println(dest);  //[Tony, Peter, Tony, Jerry]
}

對集合元素的排序操作

/* 反轉指定List集合中的元素順序。 */
static void reverse(List<?> list){}

例:

@Test
public void test(){
    ArrayList<Integer> list = new ArrayList<>();
    list.add(123);
    list.add(234);
    list.add(345);
    list.add(456);
    list.add(567);
    System.out.println(list);  //[123, 234, 345, 456, 567]
    Collections.reverse(list);
    System.out.println(list);  //[567, 456, 345, 234, 123]
}
/* 對指定的List集合中的元素進行隨機排序。
   每調用一次shuffle()均會重新對元素進行隨機排序。 */
public static void shuffle(List<?> list){}
@Test
public void test(){
    ArrayList<Integer> list = new ArrayList<>();
    list.add(123);
    list.add(234);
    list.add(345);
    list.add(456);
    list.add(567);
    System.out.println(list);  //[123, 234, 345, 456, 567]
    Collections.shuffle(list);
    System.out.println(list);  //[234, 123, 567, 345, 456]
    Collections.shuffle(list);
    System.out.println(list);  //[234, 567, 345, 456, 123]
    Collections.shuffle(list);
    System.out.println(list);  //[234, 456, 567, 123, 345]
}
/* 對指定List集合的元素進行自然排序 */
public static <T extends Comparable<? super T>> void sort(List<T> list){}
/* 對指定List集合的元素進行定製排序 */
public static <T> void sort(List<T> list,Comparator<? super T> c){}

對集合的線程安全轉化

/* 返回指定Collection集合的線程安全版本。 */
static <T> Collection<T> synchronizedCollection(Collection<T> c){}
/* 返回指定List集合的線程安全版本。 */
static <T> List<T> synchronizedList(List<T> list){}
/* 返回指定Set集合的線程安全版本。 */
static <T> Set<T> synchronizedSet(Set<T> s){}
/* 返回指定Map集合的線程安全版本。 */
static <K,V> Map<K,V> synchronizedMap(Map<K,V> m){}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章