package java2;

import org.junit.Test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

/**
 * Collections:操作Collection和Map的工具类
 *
 *
 *
 * 面试题:Collection和Collections的区别?
 *         集合        工具类
 *
 * @author 冀帅
 * @date 2020/8/12-17:41
 */
public class CollectionsTest {
    /*
    * reverse(List):反转List中的元素顺序
    * shuffle(List);对List集合元素进行随机排序
    * sort(List):根据元素的自然顺序对指定的List集合按升序排序
    * sort(List ,Comparator):根据指定的Comparator产生的顺序对List集合元素进行排序
    * swap(List,int,int):将指定list集合中i处元素和j处元素进行交换
    * .....
    *int frequency(Collection,Object):返回指定集合中指定元素出现的次数。
    *void copy(List dest,List src):将src中的内容复制到dest中
    * */
    @Test
    public  void test1(){
        List list = new ArrayList();
        list.add(123);
        list.add(43);
        list.add(765);
        list.add(765);
        list.add(765);
        list.add(-97);
        list.add(0);
        System.out.println(list);
//        Collections.reverse(list);//反转List中的元素顺序
//        Collections.shuffle(list);//随机化处理
//        Collections.sort(list);//调用Integer里的comparto方法进行自然排序,从小到大
//        Collections.swap(list,1,2);//交换位置

        System.out.println(Collections.frequency(list,765));//3次
    }
    @Test
    public  void test2(){
        List list = new ArrayList();
        list.add(123);
        list.add(43);
        list.add(765);
        list.add(-97);
        list.add(0);
//        List dest = new ArrayList();错误写法 dest长度为0 放不进去 异常:IndexOutOfBoundsException
//        Collections.copy(dest,list);//把list的内容复制到dest当中
        //正确的:
        List dest = Arrays.asList(new Object[list.size()]);//长度刚好就是list的长度
        System.out.println(dest.size());//5
        Collections.copy(dest,list);
        System.out.println(dest);
        /*
        * Collections 类中提供了多个synchronizedXxx()方法,
        * 该方法可使将指定集合包装成线程同步的集合,
        * 从而解决多线程并发访问集合是的线程安全问题
        *
        * */
        List list1 = Collections.synchronizedList(list);//返回的list1就是线程安全的
    }
}