package com.sjm.collection;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/*
* Collection 和 Collections的区别。
* Collections是一个个java.util下的工具类,它包含有各种有关集合操作的静态方法。
* Collection是个java.util下的接口,它是各种集合结构的父接口。
*
* Collections中常用的方法
* 1.同步线程
* 1>synchronizedCollection(Collection<T> c) 返回指定 collection 支持的同步(线程安全的)collection。
* 2>synchronizedList(List<T> list) 返回指定列表支持的同步(线程安全的)列表。
* 3>synchronizedMap(Map<K,V> m) 返回由指定映射支持的同步(线程安全的)映射。
* 4>synchronizedSet(Set<T> s) 返回指定 set 支持的同步(线程安全的)set。
* 2.sort 对集合进行排序
* 3.reverse 反转指定集合中元素的顺序。
* 4.shuffle 对集合中的元素进行随机排序
* 5.max,min 获取集合中的最大、最小值
* 6.binarySearch 使用二分搜索法搜索指定列表,以获得指定对象。
* 7.replaceAll 使用另一个值替换列表中出现的所有某一指定值
*/
public class CollectionsTest {
public static void main(String[] args) {
//同步线程
Map<String, String> map = new HashMap<String, String>(); //线程不安全的
Map<String, String> synchrinizedMap = Collections.synchronizedMap(map); //利用Collections中的synchronizedMap()方法将map转为线程安全的
List<Integer> list = new ArrayList<Integer>();
list.add(-10);
list.add(10);
list.add(3);
list.add(5);
//sort
Collections.sort(list); //sort对集合进行排序
System.out.println(list); //结果:[-10, 3, 5, 10]
String[] arr = {"a", "C", "abc"};
// asList 该方法可以直接将一个数组转换为list集合,但是该集合是 [只读的],不要对得到的集合进行增删改
List<String> asList = Arrays.asList(arr);
System.out.println(asList); // 结果:[a, C, abc]
//reverse
Collections.reverse(list);
System.out.println(list); //结果:[10, 5, 3, -10]
//shuffle
Collections.shuffle(list);
System.out.println(list); //结果:[3, -10, 5, 10]
//max、min
System.out.println(Collections.max(list)); //结果: 10
System.out.println(Collections.min(list)); //结果:-10
//binarySearch
Collections.sort(list);
System.out.println(Collections.binarySearch(list, 10)); //结果:3
//replaceAll
Collections.replaceAll(list, -10, 1000);
System.out.println(list); //结果:[1000, 3, 5, 10]
}
}