操作集合工具类 Collectinos

排序操作

  • void reverse(List list)
    反转list中元素的顺序,[2, 3, 1, 4]-> [4, 1, 3, 2]
  • void shuffle(List list)
    随机排序,每次结果不同
  • void sort(List list)
    根据元素自然顺序按升序排序
  • void sort(List list, Comparator c)
    根据comparator产生的顺序进行排序
  • void swap(List list, int i, int j)
    将i处元素和j处元素进行交换
  • void rotate(List list, int distance)
    distance为正数,将list后distance个元素整体移到前面;distance为负数,将list前distance个元素整体移到后面。不会改变集合长度

查找、替换操作

  • int binarySearch(List list, Object key)
    使用二分搜索法搜索有序list(必须有序),返回key对应得索引
  • Object max(Collection coll)
    根据元素的自然顺序,返回最大元素
  • Object max(Collection coll, Comparator comp)
    根据comp比较,返回最大元素
  • Object min(Collection coll)
    根据元素的自然顺序,返回最小元素
  • Object min(Collection coll, Comparator comp)
    根据comp比较,返回最小元素
  • void fill(List list, Object obj)
    使用obj替换list的所有元素
  • int frequency(Collection coll, Object obj)
    返回obj在coll中出现次数
  • int indexOfSubList(List sorce, List target)
    返回soruce在target中第一次出现的位置索引,没有返回-1
  • int lastIndexOfSubList(List sorce, list target)
    返回soruce在target中最后一次出现的位置索引,没有返回-1
  • boolean replaceAll(List list, Object oldVal, Object newVal)
    newVal替换list中的所有oldVal

同步控制

提供了多个synchronizedXxx()方法,将HashSet、TreeSet、ArrayList、ArrayDeque、LinkedList、HashMap和TreeMap等不安全集合包装成线程安全的同步集合

Collection c = Collections.synchronizedCollection(new ArrayList());
List lsit = Collections.synchronizedList(new ArrayList());
Set s = Collections.synchronizedSet(new HashSet());
Map m = Collections.synchronizedMap(new HashMap());

设置不可变集合

Collectinos 提供下面三类方法返回一个不可变集合(只读):

  1. emptyXxx()
    返回一个空的、不可变集合,可以是List、SortedSet、Map、SortedMap等集合

  2. singletonXxx(E e)
    返回一个只包含一个元素的、不可变集合,可以是List、Map

  3. unmodifiableXxx(E e)
    返回集合的不可变视图,可以是List、Set、SortedSet、Map、SortedMap等集合

java 9 新增不可变集合

声明后不能添加和删除元素(只读)
Set、List、Map的of()方法

Set set = Set.of("a","b","c");
List list = List.of(1,2,3);
//包含3个key-value对的map集合
Map map = Map.of("语文",89, "数学",99, "英语",88);
//用Map.entry()方法显式构建key-value对
Map map2 = Map.ofEntries(Map.entry("语文",89), Map.entry("数学",99), Map.entry("英语",88));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值