Java——Java集合Collections工具类

7 篇文章 0 订阅

本文根据疯狂Java讲义(第3版)整理而成,感谢作者李刚老师

如果觉得内容不错的话,推荐大家买一本阅读,绝对物超所值哦

阅读本文前可以先看:

六、操作集合的工具类:Collections

Java提供了一个操作Set、List和Map等集合的工具类:Collections(末尾有个s)。该工具类里提供了大量方法对集合元素进行排序、查询和修改等操作,还提供了将集合对象设置为不可变、对集合对象实现同步控制等方法

一、排序操作

Collections提供了如下常用的类方法用于对List集合元素进行排序:

  • void reverse(List list):反转指定List集合中元素的顺序。
  • void shuffle(List list):对List集合元素进行随机排序(模拟了洗牌操作)。
  • void sort(List list):根据元素的自然顺序对指定List集合的元素按升序进行排序。
  • void sort(List list, Comparator c):根据制定Conparator产生的顺序对List集合元素进行排序。
  • void swap(List list, int i, int j):将指定List集合中的i处元素和j处元素进行交换。
  • void rotate(List list, int distance):留一个给大家去查API吧,^_^

二、查找和替换操作

Collections还提供了如下常用的用于查找、替换集合元素的类方法。

  • int binarySearch(List list, Object key):搜索指定的List集合,获得指定对象key在集合中的索引。采用二分搜索法,所以要使该方法可以正常工作,需保证List集合有序。
  • Object max(Collection coll):根据元素的自然顺序,返回给定集合中的最大元素。
  • Object max(Collection coll, Comparator comp):根据Comparator指定的顺序,返回给定集合中的最大元素。
  • Object min(Collection coll):根据元素的自然顺序,返回给定集合中的最小元素。
  • Object min(Collection coll, Comparator comp):根据Comparator指定的顺序,返回给定集合中的最小元素。
  • void fill(List list, Object obj):
  • int frequency(Collection c, Object o):
  • int indexOfSubList(List source, List target):
  • int lastIndexOfSubList(List source, List target):
  • boolean replaceAll(List list, Object oldVal, Object newVal):

三、同步控制

Collections类中提供了多个synchronizedXxx()的类方法,该方法可以讲将指定集合包装成线程同步的集合,从而可以解决多线程并发访问集合时的线程安全问题。

Java集合框架中的典型实现类ArrayList,LinkedList,HashSet,TreeSet,ArrayDeque,HashMap和TreeMap都是线程不安全的。用该方法可以简单地得到线程安全的集合对象,如下:

public class SynchronizedTest {
    public static void main(String[] args) {
        // 下面创建了4个线程安全的集合对象
        Collection c = Collections.sychronizedCollection(new ArrayList());
        List list = Collections.sychronizedList(new ArrayList());
        Set s = Collections.sychronizedSet(new HashSet());
        Map m = Collections.sychronizedMap(new HashMap());
    }
}

四、设置不可变集合

Collections提供了如下三个类方法来返回一个不可变对象:

  • emptyXxx():返回一个空的、不可变的集合对象Xxx,此处的Xxx既可以是List,也可以是SotedSet,Set,还可以是Map,SortedMap等。
  • singletonXxx():返回一个只包含指定对象(只有一个元素)的、不可变的集合对象Xxx,此处的Xxx既可以是List,也可以是Map。
  • unmodifiableXxx():返回指定集合对象的不可变视图,此处的集合Xxx既可以是List,也可以是SotedSet,Set,还可以是Map,SortedMap等。

上面三类方法也可以带参数,参数就是已经定义好的集合对象,返回该集合的“只读”版本,生成不可变的集合。

分享一个非常方便的查看源码的网站:GrepCode


参考资料
1. Java API在线文档 - 开源中国

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值