集合工具类 Collections 介绍

2020-11-19 0 By admin

如同操作数组的工具类:Arrays;Collections 是一个操作Set、List和Map 等集合的工具类。
Collections中提供了一系列静态的方法对集合元素进行排序、查询和修改等操作,还提供了对集合对象设置不可变、对集合对象实现【同步控制|线程安全化】等方法。

一、示例:排序操作:(均为static方法)

  1. reverse(List):反转List 中元素的顺序
  2. shuffle(List):对List集合元素进行随机排序
  3. sort(List):根据元素的自然顺序对指定List 集合元素按升序排序
  4. sort(List,Comparator):根据指定的Comparator 产生的顺序对List 集合元素进行排序
  5. swap(List,int,int):将指定list 集合中的i处元素和j 处元素进行交换

二、Collections工具类常用方法的测试

import org.junit.Test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class CollectionTest {
/**
* 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 test(){
  List list = new ArrayList();
  list.add(123);
  list.add(43);
  list.add(765);

  System.out.println(list);
  Collections.reverse(list);
  Collections.shuffle(list);
  Collections.sort(list);
  Collections.swap(list,1,2);
  int frequency = Collections.frequency(list, 123);

  System.out.println(list);
  System.out.println(frequency);


  //报异常:IndexOutOfBoundsException("Source does not fit in dest")
//  List dest = new ArrayList();
//  Collections.copy(dest,list);
  //正确的:
  List dest = Arrays.asList(new Object[list.size()]);
  System.out.println(dest.size());//list.size();
  Collections.copy(dest,list);
  System.out.println(dest);
  
  /**
   * Collections 类中提供了多个 synchronizedXxx() 方法,
   * 该方法可使将指定集合包装成线程同步的集合,从而可以解决
   * 多线程并发访问集合时的线程安全问题
   */
  //返回的list1即为线程安全的List
  List list1 = Collections.synchronizedList(list);
 }
}