package Map;
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
* @create 2022-04-23-10:57
*/
public class CollectionsTest {
/*
reverse(List):反转List中的元素顺序
shuffle(List):对List集合中的元素进行随机排序
sort(List):根据元素的自然排序对指定List集合元素按升序排列
sort(List,Comparator):根据指定的Comparator产生的顺序对List集合元素进行排序
swap(List,int i,int j):将指定list集合中i处元素和j处元素进行交换
* */
/*
Object max(Collection):根据元素的自然排序,返回给定集合中的最大元素
Object max(Collection Comparator):根据Comparator指定的顺序,返回给定集合中的最大元素
Object min(Collection):根据元素的自然排序,返回给定集合中的最小元素
Object min(Collection Comparator):根据Comparator指定的顺序,返回给定集合中的最小元素
int frequency(Collection Object):返回指定集合中指定元素出现的次数
void copy(List dest,List src):将src中的内容复制到dest中
boolean replaceAll(List list,Object oldVal,Object newVal):使用新值替换List对象的所有旧值
* */
/*
Collections类中提供了多个synchronizedXxx()方法
该方法可使将指定集合包装成线程同步的集合
从而可以解决多线程并发访问集合时的线程安全问题
* */
@Test
public void test1(){
ArrayList list = new ArrayList();
list.add(123);
list.add(45);
list.add(12);
list.add(-75);
list.add(89);
// 错误写法,报异常IndexOutOfBoundsException: Source does not fit in dest
// ArrayList dest = new ArrayList();
// Collections.copy(dest,list);
// System.out.printladest);
//正确的:
List dest = Arrays.asList(new Object[list.size()]);
System.out.println(dest.size());//=list.size
System.out.println(dest);
Collections.copy(dest,list);
System.out.println(dest);
//返回的list1就是线程安全的
List list1 = Collections.synchronizedList(list);
}
@Test
public void test(){
ArrayList list = new ArrayList();
list.add(123);
list.add(45);
list.add(12);
list.add(12);
list.add(12);
list.add(-75);
list.add(89);
System.out.println(list);
// Collections.reverse(list);
//Collections.shuffle(list);
// Collections.sort(list);
// Collections.swap(list,1,2);
int frequency = Collections.frequency(list,12);
System.out.println(list);
System.out.println(frequency);
}}
|