Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java中 Collections工具类的学习

Java中 Collections工具类的学习

作者头像
呼延十
发布于 2019-07-01 09:13:01
发布于 2019-07-01 09:13:01
5210
举报
文章被收录于专栏:呼延呼延

前言

天天都在用Java集合,也偶尔用到了Collections类中的一些方法,但是一直没有对这个工具类进行一个较为系统的学习,今天放假比较无聊,闲来看一看.并且记录一下API.

5500多行的代码,,这个工具类是真的大,希望可以发现一些好用且常用的工具方法.

大部分API会在API记录部分写一下,少部分需要额外补充说明的,在某些特殊说明中单独记录.

API记录

编号

方法

作用

备注

1

public static <T extends Comparable<? super T>> void sort(List<T> list)

对传入的list进行排序

使用该元素自己的Comparable

2

public static <T> void sort(List<T> list, Comparator<? super T> c)

使用指定的Comparable进行排序

3

public static <T> int binarySearch(List<? extends Comparable<? super T>> list, T key)

在给定的list里面找key,使用二分查找算法.

4

public static <T> int binarySearch(List<? extends T> list, T key, Comparator<? super T> c)

上一个方法的指定Comparable版本.

5

public static void reverse(List<?> list)

翻转list中元素的顺序

6

public static void shuffle(List<?> list, Random rnd)

随机打乱list中的元素顺序

7

public static void swap(List<?> list, int i, int j)

交换list在两个下标上的元素

所以我们日常的swap其实不用自己写的

8

public static <T> void fill(List<? super T> list, T obj)

用给定的元素将list的全部元素替换掉.

9

public static <T> void copy(List<? super T> dest, List<? extends T> src)

拷贝列表

10

public static <T extends Object & Comparable<? super T>> T min(Collection<? extends T> coll)

返回集合中最小的元素

当然他也有指定Comparable的版本.不贴了.

11

public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll)

返回集合中最大的元素

当然也有咯.

12

public static void rotate(List<?> list, int distance)

回转当前列表

回转的定义:之前是1,2,3,以1回转之后就是3,1,2.以2回转就是,2,3,1.

13

public static <T> boolean replaceAll(List<T> list, T oldVal, T newVal)

批量用新值替换当前列表中的某一个值

14

public static int indexOfSubList(List<?> source, List<?> target)

返回target集合在source列表中的index,如果target不是source的子列表,返回-1;

15

public static int lastIndexOfSubList(List<?> source, List<?> target)

返回最后出现的index,比如1,2,3,2,target=2,返回3.

16

public static <T> Collection<T> unmodifiableCollection(Collection<? extends T> c)

返回一个不可变的视图

封装了一下,重写了所有可能修改集合的方法,抛出异常

17

public static <T> Set<T> unmodifiableSet(Set<? extends T> s)

不可变的set

接下来是几个set的变种,sortedset之类的.

18

public static <T> List<T> unmodifiableList(List<? extends T> list)

不可变的list.

19

public static <K,V> Map<K,V> unmodifiableMap(Map<? extends K, ? extends V> m)

不可变的Map

20

public static <T> Collection<T> synchronizedCollection(Collection<T> c)

强行是用synchronized同步的集合类

返回的也是封装,重写之后的类,接下来和上面不可变一样,是list,map,set及其变种.

21

c static <E> Collection<E> checkedCollection(Collection<E> c, Class<E> type)

一堆进行了类型检查的集合类

也有map等等变种.

22

public static <T> Iterator<T> emptyIterator()

返回一个空的迭代器

接下来有许多空的list,set,map等等.

23

public static <T> Set<T> singleton(T o)

返回只有一个元素的set.

24

public static <T> List<T> singletonList(T o)

返回只有一个元素的List.

25

public static <K,V> Map<K,V> singletonMap(K key, V value)

返回只有一个元素的Map.

26

public static <T> Enumeration<T> enumeration(final Collection<T> c)

返回当前集合的枚举

27

public static <T> ArrayList<T> list(Enumeration<T> e)

从枚举返回ArrayList.

28

public static int frequency(Collection<?> c, Object o)

返回输入对象在集合中的出现次数.

29

public static boolean disjoint(Collection<?> c1, Collection<?> c2)

返回两个集合是都有交集

有交集返回false,没有返回true.

30

public static <T> boolean addAll(Collection<? super T> c, T... elements)

将给定的元素全部添加到给定集合中

集合本身可以添加全部,但是必须要求也是集合参数,比如你有两个独立的元素,就可以直接使用这个类而不是用两个元素构造一个集合,然后调用集合本身的addall.

31

public static <E> Set<E> newSetFromMap(Map<E, Boolean> map)

返回当前map的keyset.

set持有原来的map的引用.

32

public static <T> Queue<T> asLifoQueue(Deque<T> deque)

将一个deque转换为队列,并且是LIFO(后进先出).

ChangeLog

2019-05-01 完成

以上皆为个人所思所得,如有错误欢迎评论区指正。

欢迎转载,烦请署名并保留原文链接。

联系邮箱:huyanshi2580@gmail.com


本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java 常用工具类 Collections 源码分析
张拭心 shixinzhang
2018/01/05
1.4K0
Java 常用工具类 Collections 源码分析
java 容器 --- Collections
// 排序 void sort(List<T> list); void sort(List<T> list, Comparator<? super T>); // 二分查找 int binarySea
yuxiaofei93
2018/09/11
4580
Java常用类(五)之集合工具类Collections
前言    Java提供了一个操作Set、List和Map等集合的工具类:Collections,该工具类提供了大量方法对集合进行排序、查询和修改等操作,     还提供了将集合对象置为不可变、对集合
用户1195962
2018/01/18
1K0
Java常用类(五)之集合工具类Collections
JDK 工具类之 Collections
/* * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */ package java.util; import java.io.Serializable; import java.io.ObjectOutputStream; import java.io.I
一个会写诗的程序员
2022/05/13
2990
Java学习笔记——集合
存储对象可以使用数组 (基本数据类型 & 引用数据类型) 和集合 (引用数据类型),用数组存储对象的弊端有:一旦创建,其长度不可变;数组中真正存储的对象个数不可知,除非自定义类。使用集合可以解决这些问题。
梦飞
2022/06/23
2940
Java学习笔记——集合
用斗地主的实例学会使用java Collections工具类
最近在学习数据结构和算法的过程中频繁用到了Collections工具类,这是开发中的一把利器,简化了许多涉及集合的编码,该文将通过实例对此工具类进入深入剖析。
智慧zhuhuix
2020/08/14
7281
用斗地主的实例学会使用java Collections工具类
JDK 工具类之 Collections 3
/** * Returns a dynamically typesafe view of the specified sorted map. * Any attempt to insert a mapping whose key or value have the wrong * type will result in an immediate {@link ClassCastException}. * Similarly, any attempt to mo
一个会写诗的程序员
2022/05/13
3990
【小家java】聊聊Java中的java.util.Arrays类和java.util.Collections工具类
有很多开发了很多年的人,只使用过它的asList方法去快速构建一个List,但其实它是非常强大的,可以很大程度上简化我们操作数组的方式。
YourBatman
2019/09/03
8090
【小家java】聊聊Java中的java.util.Arrays类和java.util.Collections工具类
JDK源码解析之Java.util.Collections
Collecions定义的这些变量叫做优化参数(Tuning Parameter),其作用在于优化类中方法的性能(permformance)。
栗筝i
2022/12/01
2870
java集合【6】-- Collection源码解析
collection在java集合中,算是顶级接口,它继承了iterable接口,不能实例化,只能实例化其子类。之所以需要这样一个接口,是因为java作为面向对象,总是避免不了处理多个对象的情况,要处理多个对象,首先需要容器存储,这个容器就是集合。为什么有了数组,还需要集合,因为数组的功能单一,长度不可变,而有些集合实现类则是对数组操作的封装。
秦怀杂货店
2020/11/20
5690
java集合【6】-- Collection源码解析
Collections工具类和Arrays工具类
Collections 提供了多个synchronizedXxx()方法·,该方法可以将指定集合包装成线程同步的集合,从而解决多线程并发访问集合时的线程安全问题。
shimeath
2020/07/30
8760
Java集合框架(六)—— Collections工具类
操作集合的工具类Collections   Java提供了一个操作Set、List和Map等集合的工具类:Collections,该工具类里提供了大量方法对集合元素进行排序、查询和修改等操作,还提供了将集合对象设置为不可变、对集合对象实现同步控制等方法。 排序操作   Collections提供了如下几个方法对List集合元素进行排序:   static void reverse(List list);       //反转指定List集合元素的顺序。 static void shuffle(L
10JQKA
2018/05/09
5590
(53) 剖析Collections - 算法 / 计算机程序的思维逻辑
之前几节介绍了各种具体容器类和抽象容器类,上节我们提到,Java中有一个类Collections,提供了很多针对容器接口的通用功能,这些功能都是以静态方法的方式提供的。 都有哪些功能呢?大概可以分为两类: 对容器接口对象进行操作 返回一个容器接口对象 对于第一类,操作大概可以分为三组: 查找和替换 排序和调整顺序 添加和修改 对于第二类,大概可以分为两组: 适配器:将其他类型的数据转换为容器接口对象 装饰器:修饰一个给定容器接口对象,增加某种性质 它们都是围绕容器接口对象的,第一类是针对容器接口的通用操作
swiftma
2018/01/31
1.4K0
(53) 剖析Collections - 算法 / 计算机程序的思维逻辑
初学者第58节之Collections工具类
此类完全由在 collection 上进行操作或返回 collection 的静态方法组成。它包含在 collection 上操作的多态算法,即“包装器”,包装器返回由指定 collection 支持的新 collection,以及少数其他内容。
用户5224393
2019/08/20
4830
java基础学习_集合类04_Map接口、Collections工具类_day18总结
============================================================================= =============================================================================
黑泽君
2018/10/11
8300
java基础学习_集合类04_Map接口、Collections工具类_day18总结
【Java】09 List 集合与 Collections 工具类
   List 作为 Collection 接口的子接口,当然可以使用 Collection 接口里的全部方法。而且由于 List 是有序集合,因此 List 集合里增加了一些根据索引来操作集合元素的方法。
Demo_Null
2020/09/28
7460
Java集合 Map 集合 与 操作集合的工具类: Collections 的详细说明
如下是 Set 中的 Key 存储自定义类 Person5 ,其中并没有重写Object 中的 equals() 方法和 hashCode()方法。会出现 Key 存储到重复的数据。
RainbowSea
2023/02/03
1.1K0
Java集合框架(五)-Collections 和 泛型
Collections工具类中提供了多个synchronizedXxx方法,该方法返回指定集合对象对应的同步对象,从而解决多线程并发访问集合时线程的安全问题。HashSet、ArrayList、HashMap都是线程不安全的,如果需要考虑同步,则使用这些方法。这些方法主要有:synchronizedSet、synchronizedSortedSet、synchronizedList、synchronizedMap、synchronizedSortedMap。
化羽羽
2022/10/28
2870
Java Review (三十、集合----- 操作集合的工具类: Collections)
Java 提供了一个操作 Set 、 List 和 Map等集合的类:Collections , 该工具类里提供了大量方法对集合元素进行排序、 查询和修改等操作,还提供了将集合对象设置为不可变、对集合对象实现同步控制等方法 。
三分恶
2020/07/16
4710
Collection和Collections
Collection是集合顶级接口。提供了对集合对象的基本操作的接口方法。Collections是一个工具类,包含各种有关集合的静态多态方法,包括排序、搜索以及线程安全等各种操作,服务于Java的Collection框架。
2019/05/07
5270
相关推荐
Java 常用工具类 Collections 源码分析
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档