java集合工具类Collections

前言

java.util.Collections 是一个包装类。它包含有各种有关集合操作的静态多态方法。此类不能实例化,就像一个工具类,服务于Java的Collection框架。他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作

一、元素操作

1、增加值
static <T> boolean addAll(Collection<? super T> c, T... elements) 将所有指定的元素添加到指定的集合中。 

案例

ArrayList<Number> a = new ArrayList<Number>(); 
a.add(1);
a.add(2);
a.add(3);
a.add(4); 
Collections.addAll(a,new Integer[]{9,8}); 
System.out.println(a);[1, 2, 3, 4, 9, 8] 
2、填充
static <T> void fill(List<? super T> list, T obj) 用指定元素替换指定列表的所有元素。   

案例

ArrayList<Integer> a = new ArrayList<Integer>(); 
a.add(1); 
a.add(2);
a.add(3);
a.add(1); 
Collections.fill(a,0); 
System.out.println(a);[0, 0, 0, 0] 
3、元素的数目
static int frequency(Collection<?> c, Object o) 返回指定集合中等于指定对象的元素的数目。 

案例

ArrayList<Integer> a = new ArrayList<Integer>(); 
a.add(1);
a.add(2);
a.add(3);
a.add(1); 
System.out.println(Collections.frequency(a,1));2 
4、替换
static <T> boolean replaceAll(List<T> list, T oldVal, T newVal) 将列表中的某一特定值的所有出现替换为另一个。 

案例

ArrayList<Integer> a = new ArrayList<Integer>(); 
a.add(1);
a.add(2);
a.add(3);
a.add(1); 
Collections.replaceAll(a,1,9); 
System.out.println(a);[9, 2, 3, 9] 
5、反转
static void reverse(List<?> list) 反转指定列表中元素的顺序。

案例

ArrayList<Integer> a = new ArrayList<Integer>(); 
a.add(1);
a.add(2);
a.add(3);
a.add(4); 
Collections.reverse(a); 
System.out.println(a);//[4, 3, 2, 1] 
6、随机置换指定列表值的顺序
static void shuffle(List<?> list) //随机置换指定列表使用随机默认源。   
static void shuffle(List<?> list, Random rnd) //随机排列指定列表使用指定的随机源。   

案例

ArrayList<Integer> a = new ArrayList<Integer>(); 
a.add(1);
a.add(2);
a.add(3);
a.add(4); 
Collections.shuffle(a); 
System.out.println(a);[1, 4, 3, 2] 
7、指定的距离旋转
static void rotate(List<?> list, int distance) 按指定的距离旋转指定列表中的元素。

案例

ArrayList<Integer> a = new ArrayList<Integer>(); 
a.add(1);
a.add(2);
a.add(3);
a.add(4); 
System.out.println(a);//[1, 2, 3, 4] 
Collections.rotate(a,2); 
System.out.println(a);//[3, 4, 1, 2] 
8、指定位置交换元素
static void swap(List<?> list, int i, int j) 在指定的列表中的指定位置上交换元素。

案例

ArrayList<Integer> a = new ArrayList<Integer>(); 
a.add(1);
a.add(2);
a.add(3);
a.add(4); 
System.out.println(a);[1, 2, 3, 4] 
Collections.swap(a,1,2) ; 
System.out.println(a);[1, 3, 2, 4] 
9、有没有共同的元素?
static boolean disjoint(Collection<?> c1, Collection<?> c2) //如果两个指定集合没有共同的元素返回 true 

案例

ArrayList<Integer> a = new ArrayList<Integer>(); 
a.add(1);
a.add(2);
a.add(3);
a.add(4); 
ArrayList<Integer> b = new ArrayList<Integer>(); 
b.add(4);
b.add(6);
b.add(7);
b.add(8);          
System.out.println(Collections.disjoint(a,b));//false 
10、复制

注意:dest - 目标列表长度必须大于等于src - 源列表长度否则抛出异常

static <T> void copy(List<? super T> dest, List<? extends T> src) //将所有的元素从一个列表复制到另一个列表中。 

案例

ArrayList<Integer> a = new ArrayList<Integer>(); 
a.add(1);
a.add(1);
a.add(3);
a.add(1); 
ArrayList<Integer> b = new ArrayList<Integer>(); 
b.add(6);
b.add(5);
b.add(7); 
Collections.copy(a,b); 
System.out.println(b);[6, 5, 7] 
System.out.println(a);[6, 5, 7, 1] 
11、二分法查找

list - 要搜索的列表,key - 要搜索的值;如果找到就返回值在集合中的位置,否则返回负数

static <T> int binarySearch(List<? extends Comparable<? super T>> list, T key) 
static <T> int binarySearch(List<? extends T> list, T key, Comparator<? super T> c) 
12、查询列表

target- 要搜索的列表;指定源列表中第一次出现指定目标列表的起始位置,如果不存在,则返回-1

static int indexOfSubList(List<?> source, List<?> target) 返回指定的源列表中指定的目标列表的第一个发生的起始位置。  

static int lastIndexOfSubList(List<?> source, List<?> target) 返回指定的源列表中指定的目标列表的最后一个发生的起始位置,

案例

List<String>listSources=Arrays.asList("1","2","3","4","5","6");
List<String>listTarget=Arrays.asList("2","3");
int a =Collections.indexOfSubList(listSources,listTarget);
System.out.println(a);1
13、排序
static <T extends Comparable<? super T>> void sort(List<T> list) //指定列表为升序排序,根据其元素的 natural ordering。   
static <T> void sort(List<T> list, Comparator<? super T> c) //根据指定的比较器指定的顺序对指定的列表进行排序。   

static <T> Comparator<T> reverseOrder()// 返回一个比较器,对一系列的实施 Comparable界面对象的自然顺序相反。   
static <T> Comparator<T> reverseOrder(Comparator<T> cmp) //返回一个对指定比较器的反向排序的比较器。   
14、最值
//返回最小的元素的集合,根据其元素的自然排序。  
static <T extends Object & Comparable<? super T>>T min(Collection<? extends T> coll) 

//返回最大元素的集合,根据其元素的自然排序。 
static <T extends Object & Comparable<? super T>>T max(Collection<? extends T> coll) 

//返回给定集合的最大元素,根据指定的比较器诱导的顺序。
static <T> T max(Collection<? extends T> coll, Comparator<? super T> comp) 

//返回给定集合的最小元素,根据指定的比较器诱导的顺序。 
static <T> T min(Collection<? extends T> coll, Comparator<? super T> comp) 

二、返回集合

1、返回一个Collection
//将一个Collection变为一个不可修改的视图。
static <T> Collection<T> unmodifiableCollection(Collection<? extends T> c) 
//将将一个非线程安全Collection变为一个线程安全的Collection。
static <T> Collection<T> synchronizedCollection(Collection<T> c) 
static <E> Collection<E> checkedCollection(Collection<E> c, Class<E> type) 返回一个指定集合的动态类型安全的观点。  	
2、返回一个List
static <T> List<T> emptyList() //返回一个空列表(不可变)。

static <T> List<T> unmodifiableList(List<? extends T> list) //返回指定列表中的一个不可修改的视图。 
 
static <T> List<T> synchronizedList(List<T> list) //返回由指定列表支持的同步(线程安全)列表。
  
static <T> List<T> singletonList(T o) //返回只包含指定对象的不可改变的列表

static <T> List<T> nCopies(int n, T o)//返回一个不可变列表组成的n个拷贝的指定对象

static <T> ArrayList<T> list(Enumeration<T> e) //返回一个数组列表,该列表包含在返回的顺序中由枚举返回的元素的元素。

static <E> List<E> checkedList(List<E> list, Class<E> type) //返回一个动态类型安全的查看指定的列表。

案例

List<String> stringList = Collections.nCopies(2, "A");
stringList.forEach(System.out::print);AA
stringList.add("v");//Exception in thread "main" java.lang.UnsupportedOperationException
2、返回一个Queue
static <E> Queue<E> checkedQueue(Queue<E> queue,<E> type) //返回一个动态类型安全的查看指定队列。

static <T> Queue<T> asLifoQueue(Deque<T> deque) //返回一个 Deque视图为后进先出(LIFO) Queue。
3、返回一个Set
static <T> Set<T> unmodifiableSet(Set<? extends T> s) //返回指定的设置不可修改的视图。
static <T> Set<T> synchronizedSet(Set<T> s) //返回一个由指定集合支持的同步(线程安全)集。  
static <E> Set<E> newSetFromMap(Map<E,Boolean> map) //返回一个由指定的映射支持的集合。
static <E> Set<E> checkedSet(Set<E> s,<E> type) //返回一个指定的动态类型安全的观点。
static <T> Set<T> emptySet() //返回一个空集(不可变)。   
static <T> Set<T> singleton(T o) //返回只包含指定对象的不可改变的集合。  
4、返回一个SortedSet
static <T> SortedSet<T> unmodifiableSortedSet(SortedSet<T> s) 返回指定的排序设置不可修改的视图。
static <T> SortedSet<T> synchronizedSortedSet(SortedSet<T> s) 返回一个由指定的排序集支持的同步(线程安全)排序集。
static <E> SortedSet<E> checkedSortedSet(SortedSet<E> s,<E> type) 返回一个mj的排序设置。  
static <E> SortedSet<E> emptySortedSet() 返回一个空的排序集(不可变)。

5、返回一个NavigableSet
static <T> NavigableSet<T> unmodifiableNavigableSet(NavigableSet<T> s) 返回指定通航设置不可修改的视图。  
static <T> NavigableSet<T> synchronizedNavigableSet(NavigableSet<T> s) 返回由指定的导航集支持的同步(线程安全)导航集。  
static <E> NavigableSet<E> emptyNavigableSet() 返回一个空的导航集(不可变)。
static <E> NavigableSet<E> checkedNavigableSet(NavigableSet<E> s,<E> type) 返回一个动态类型安全的集合视图指定通航。
6、返回一个Map
static <K,V> Map<K,V> emptyMap()//返回一个空Map,且是不可变的 
static <K,V> Map<K,V> singletonMap(K key, V value) //返回只包含指定对象的不可改变的列表
static <K,V> Map<K,V> unmodifiableMap(Map<? extends K,? extends V> m) //这个方法是将一个map变成一个不可修改的map
static <K,V> Map<K,V> synchronizedMap(Map<K,V> m) //讲一个map变成一个SynchronizedMap(线程安全)
static <K,V> Map<K,V> checkedMap(Map<K,V> m,<K> keyType,<V> valueType) //返回一个动态类型安全的查看指定的Map。  
7、返回一个SortedMap
static <K,V> SortedMap<K,V> unmodifiableSortedMap(SortedMap<K,? extends V> m) //返回指定的排序图上一个不可修改的视图。  
//返回一个由指定的排序映射支持的同步(线程安全)排序的Map。  
static <K,V> SortedMap<K,V> synchronizedSortedMap(SortedMap<K,V> m) 
static <K,V> SortedMap<K,V> emptySortedMap() //返回一个空的排序映射(不可变)。
//返回一个动态类型安全的查看指定的排序图。 
static <K,V> SortedMap<K,V> checkedSortedMap(SortedMap<K,V> m,<K> keyType,<V> valueType) 
8、返回一个NavigableMap
//返回指定的导航电子Map的一个不可修改的视图。  
static <K,V> NavigableMap<K,V> unmodifiableNavigableMap(NavigableMap<K,? extends V> m) 
//返回一个动态类型安全的查看指定的导航电子Map。
static <K,V> NavigableMap<K,V> checkedNavigableMap(NavigableMap<K,V> m,<K> keyType,<V> valueType) 
//返回指定的导航Map支持的同步(线程安全)导航Map。  
static <K,V> NavigableMap<K,V> synchronizedNavigableMap(NavigableMap<K,V> m) 
static <K,V> NavigableMap<K,V> emptyNavigableMap() //返回一个空的导航Map(不可变)。
9、返回一个Enumeration
static <T> Enumeration<T> enumeration(Collection<T> c) //返回指定集合的枚举数。  
static <T> Enumeration<T> emptyEnumeration() //返回一个没有元素的枚举。
10、返回一个迭代器
static <T> Iterator<T> emptyIterator() //返回一个没有元素的迭代器。     
static <T> ListIterator<T> emptyListIterator() //返回一个没有元素的列表迭代器。 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值