Java Collections工具类的使用

165 阅读2分钟

1. Collections概述

Collections 是一个操作 Set、List 和 Map 等集合的工具类。

2. 常用方法

  • 排序操作:

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

@Test
public void test01(){

    List list = Arrays.asList(412,53,67,35,64,75);
    System.out.println(list);
    //revere()
    Collections.reverse(list);
    System.out.println(list);

    //shuffle()
    Collections.shuffle(list);
    System.out.println(list);

    //sort() 升序
    Collections.sort(list);
    System.out.println(list);
            //降序(需要重写compare方法)
    Collections.sort(list, new Comparator() {
        @Override
        public int compare(Object o1, Object o2) {
            if(o1 instanceof Integer && o2 instanceof Integer){
                Integer i1 = (Integer) o1;
                Integer i2 = (Integer) o2;

                return i1 - i2;
            }
            throw new RuntimeException("类型不匹配");
        }
    });
    System.out.println(list);
}
  • 查找:

Object max(Collection):根据元素的自然顺序,返回给定集合中的最大元素
Object max(Collection,Comparator):根据 Comparator 指定的顺序,返回给定集合中的最大元素
Object min(Collection):根据元素的自然顺序:返回给定集合中的最小元素
Object min(Collection,Comparator):根据 Comparator 指定的顺序,返回给定集合中的最小元素
int binarySearch(List list,T key):用二分查找在List集合中查找某个元素的下标
int binarySearch(List list,T key,Comparator c):用二分查找在List集合中查找某个元素的下标,根据 Comparator 指定的顺序
int frequency(Collection c,object o):返回指定集合中指定元素的出现次数

  • 复制、替换:

void copy(List dest,List src):将src中的内容复制到dest中
boolean replaceAll(List list,Object oldVal,Object newVal):使用新值替换 List 对象的所有旧值
提供了多个unmodifiableXxx()方法:该方法返回指定 Xxx的不可修改的视图。

public void test02(){

    //void copy(List dest,List src):将src中的内容复制到dest中
    List src = Arrays.asList(412,53,67,35,64,75);
    //要先把src的大小赋给dest
    List dest = Arrays.asList(new Object[src.size()]);
    Collections.copy(dest,src);
    System.out.println(dest);

    //unmodifiableXxx()方法:该方法返回指定 Xxx的不可修改的视图。
    List list = Collections.unmodifiableList(src);
    //不可以写,只可以读
    System.out.println(list.get(1));  //53
}
  • 添加:

boolean addALL(Collection c,T...elements)将所有指定元素添加到指定 collection 中

  • 同步:

Collections 类中提供了多个 synchronizedXxx() 方法,该方法可使将指定集合包装成线程同步的集合,从而可以使集合变成线程安全

public void test03(){
    List list = new ArrayList();
    //Collections 类中提供了多个 synchronizedXxx() 方法
    // 返回的List2就是线程安全的
    List list2 = Collections.synchronizedList(list);
    
    HashMap map1 = new HashMap();
    //返回的mop2就是线程安全的
    Map map2 = Collections.synchronizedMap(map1);
}