package com.iflytek.prac;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
 
import org.junit.Test;
 
/**
 * Collection工具类Collections,用于操作集合的工具类
 * @author George
 *
 */
public class TestCollections {
    /*
     *  reverse(List):反转 List 中元素的顺序
         shuffle(List):对 List 集合元素进行随机排序
         sort(List):根据元素的自然顺序对指定 List 集合元素按升序排序
         sort(List,Comparator):根据指定的 Comparator 产生的顺序对 List 集合元素进行排序
         swap(List,int, int):将指定 list 集合中的 i 处元素和 j 处元素进行交换
 
     */
    @Test
    public void testCollection1(){
         List list = new ArrayList();
         list.add(123);
         list.add(233);
         list.add(453);
         list.add(213);
         System.out.println(list);//[123, 233, 453, 213]
         //集合的反转
         Collections.reverse(list);
         System.out.println(list);//[213, 453, 233, 123]
 
         //集合的随机排序
         Collections.shuffle(list);
         System.out.println(list);//[213, 233, 123, 453]
 
         //集合的自然排序
         Collections.sort(list);
         System.out.println(list);//[123, 213, 233, 453]
 
         //将集合中的i元素和j元素进行交换
         Collections.swap(list, 0, 3);
         System.out.println(list);
    }
 
 
    /*
     *  Object max(Collection):根据元素的自然顺序,返回给定集合中的最大元素
         Object max(Collection,Comparator):根据 Comparator 指定的顺序,返回给定集合中的最大元素
         Object min(Collection)
         Object min(Collection,Comparator)
         int frequency(Collection,Object):返回指定集合中指定元素的出现次数
         void copy(List dest,List src):将src中的内容复制到dest中
         boolean replaceAll(List list,Object oldVal,Object newVal):使用新值替换 List 对象的所有旧值
 
     */
    @Test
    public void testCollections2(){
         List list = new ArrayList();
         list.add(123);
         list.add(456);
         list.add(12);
         list.add(78);
         list.add(456);
         //返回集合中的最大的元素
         Object obj = Collections.max(list);
         System.out.println(obj);//456
 
         //返回集合中指定元素在集合中出现的次数。
         int count = Collections.frequency(list, 456);
         System.out.println(count);//2
 
         //实现List的复制
         List list1 = Arrays.asList(new Object[list.size()]);
         Collections.copy(list1, list);
         System.out.println(list1);
 
         //通过synchronizedList保证线程的安全
         List list2 = Collections.synchronizedList(list);
         System.out.println(list2);
 
         //使用新值替换 List 对象的所有旧值
         boolean b = Collections.replaceAll(list, 456, 00);
         System.out.println(b);//true
         System.out.println(list);//[123, 0, 12, 78, 0]
    }
}