说明

工具类,提供了许多静态方法,用于操作集合。

模块:java.util.Collections

方法:全是static方法,使用时直接Collections.xxx( ... )

返回值类型

方法

说明

boolean addAll(Collection< ? super T >c, T... elements) 把第二个参数中的所有元素添加到c中
Queue<T> asLifoQueue(Deque <T> deque) 返回deque对应的Queue
int binarySearch(List<? extends Comparable<? super T>>list,T key) 用二进制检索算法搜索list中key对应的对象
Collection<E> checkedCollection(Collection<E> c, Class<E> type) 返回指定Collection的dynamically typesafe view
List<E> checkedList(List<E>list , Class<E> type)  
  checkedMap(...)  
  checked...(...)  
void copy(List<? super T> dest , List<? extends T>src) 复制dest中的所有元素到src中
boolean disjoint(Collection<?>c1 , Collection<?>c2) 当两个集合没有共同元素时返回true

Enumeration<T>

Iterator<T>

List<T>

ListIterator<T>

Map<K,​V>

NavigableMap<K,V>

NavigableSet<E>

Set<T>

SortedMap<K,​V>

SortedSet<E>

emptyEnumeration()

emptyIterator()

emptyList()

emptyListIterator()

emptyMap()

emptyNavigableMap()

emptyNavigableSet()

emptySet()

emptySortedMap()

emptySortedSet()

返回一个空的,指定类型的集合(常用于初始化)

Enumeration<T>

enumeration(Collection<T> c)

 
void fill(List<? super T>list , T obj) 用obj代替list中的所有元素
int frequency(Collection<?>c , Object o) 返回o在集合c中出现的次数
int indexOfSubList(List<?>source,List<?>target) 返回target在source中第一次出现的位置,失败返回-1
int lastIndexOfSubList(List<?>source,List<?>target) 返回target在source中最后一次出现的位置,失败返回-1
ArrayList<T> list(Enumeration<T> e) 返回一个包含e中所有元素(按照它们的顺序)的arraylist
T max(Collection<? extends T> coll) 返回集合中的最大元素(自然顺序)
T max(Collection<? extends T>coll,Coparator<? super T>comp) 返回集合中的最大元素(由Comparator排序)
T min(Collection<? extends T> coll) 返回集合中的最小元素(自然顺序)
T min(Collection<? extends T>coll,Coparator<? super T>comp) 返回集合中的最小元素(由Comparator排序)
List<T> nCopies(int n , T o) 返回一个由n个元素o组成的List
Set<E> newSetFromMap(Map<E,Boolean>map) 返回map对应的Set
boolean replaceAll(List<T>list,T oldVal,T newVal) 用newVal替换list中全部oldVal
void reverse(List<?>list) 反转list中的元素
Comparator<T> reverseOrder() 返回反转顺序的Compartor
Comparator<T> reverseOrder(Comparator<T> cmp)  
void rotate(List<?>list,int distance) 所有元素后移若干单位(末尾在开始补充)
void shuffle(List<?>list) 把list中的元素重新排序
void shuffle(List<?>list,Random rnd) 使用指定随机源把list中的元素重新排序
Set<T> singleton(T o) 返回一个只包含指定元素o的Set
List<T> singletonList(T o) 返回一个只包含指定元素o的List
Map<K,V> singletonMap(K key,V value) 返回一个只包含指定K-V的Map
void sort(List<T>list) 对list进行排序(自然顺序)
void sort(List<T>list , Comparator<? super T>c) 对list进行排序(由Comparator指定顺序)
void swap(List<?>list , int i , int j) 交换list中索引为i与j的元素

Collection<T>

List<T>

Map<K,V>

NavigableMap<T>

NavigableSet<T>

Set<T>

SortedMap<K,​V>

SortedSet<T>

synchronizedCollection(Collection<T> c)

synchronizedList(List<T> list)

synchronizedMap(Map <K,V> m)

synchronizedNavigableMap​(NavigableMap<T> m)

synchronizedNavigableSet​(NavigableSet<T> s)

synchronizedSet​(Set<T> s)

synchronizedSortedMap​(SortedMap<K,​V> m)

synchronizedSortedSet​(SortedSet<T> s)

返回集合c对应的同步(线程安全)集合

返回list对应的同步(线程安全)List

返回m对应的同步(线程安全)Map

返回m对应的同步(线程安全)NavigableMap

返回s对应的同步(线程安全)NavigableSet

返回s对应的同步(线程安全)Set

返回m对应的同步(线程安全)SortedMap

返回s对应的同步(线程安全)SortedSet

Collection<T>

List<T>

Map<K,V>

NavigableMap<T>

NavigableSet<T>

Set<T>

SortedMap<K,​V>

SortedSet<T>

unmodifiableCollection(Collection<T> c)

unmodifiableList(List<T> list)

unmodifiableMap(Map <K,V> m)

unmodifiableNavigableMap​(NavigableMap<T> m)

unmodifiableNavigableSet​(NavigableSet<T> s)

unmodifiableSet​(Set<T> s)

unmodifiableSortedMap​(SortedMap<K,​V> m)

unmodifiableSortedSet​(SortedSet<T> s)

返回这些集合类型的不可变集合

部分方法说明

1、addAll( Collection<? super T> c , T... elements ):往集合中添加元素

给集合c添加若干元素,由于第一个参数是Collection,所以我们可以传入List、Set等集合。

2、emptyXXX( ... ):创建空集合

要注意返回的空集合是不可变集合,无法向其中增删元素。

此外,也可以用各集合接口的of( T... )方法创建空集合,例如,以下两种创建空List的方法等价:

List <String> list1 = List.of();
List <String> list2 = Collections.emptyList();

3、singletonXXX( ... ):创建单元素集合

返回的集合也是不可变集合。

也可以用of( ... )实现:

List <String> list1 = List.of("apple");
List <String> list2 = Collections.singletonList("apple");

实际上,用List.of( T... )更方便,因为它可以创建任意个元素的List:

List<String> list1 = List.of(); // empty list
List<String> list2 = List.of("apple"); // 1 element
List<String> list3 = List.of("apple", "pear"); // 2 elements
List<String> list4 = List.of("apple", "pear", "orange"); // 3 elements

4、unmodifiableXXX( ... ):返回不可变集合

对原集合的修改会导致与之对应的不可变集合的改变,所以最好返回不可变集合之后就丢弃原集合。

5、synchronizedXXX( ... ):返回线程安全集合

由于JDK5之后,引入了更高效的并发集合类,所以这些同步方法已经没啥用了。

Java:Collections的更多相关文章

  1. Java基础知识强化之集合框架笔记69:Collections类之ArrayList存储自自定义对象并排序的案例

    1. ArrayList存储自自定义对象并排序的案例: ArrayList存储自自定义对象,并使用Collections对ArrayList存储基本包装类的元素排序. 2. 代码实现: (1)Stud ...

  2. Java基础知识强化之集合框架笔记68:Collections类概述和成员方法(备注:Collection 和 Collections区别)

    1. Collections类概述: 针对集合操作的工具类,都是静态方法.  2. Collection 和 Collections的区别: Collections是个java.util下的类,它包含 ...

  3. java.util.Collections.copy():列表List浅拷贝

    今天同事问我怎样将一个列表(list1)拷贝到另一个列表(list2),然后修改新的列表(list2)不会影响到旧的列表(list1),想了一想,这是深拷贝啊. 可是,除了循环new还有别的办法吗,想 ...

  4. Java学习笔记33(集合框架七:Collections工具类)

    数组有工具类,方面操作数组 集合也有工具类:Collections 常用方法示例: package demo; import java.util.ArrayList; import java.util ...

  5. Java:集合,Collections工具类用法

    Collections工具类提供了大量针对Collection/Map的操作,总体可分为四类,都为静态(static)方法: 1. 排序操作(主要针对List接口相关) reverse(List li ...

  6. 集合-强大的集合工具类:java.util.Collections中未包含的集合工具

    任何对JDK集合框架有经验的程序员都熟悉和喜欢java.util.Collections包含的工具方法.Guava沿着这些路线提供了更多的工具方法:适用于所有集合的静态方法.这是Guava最流行和成熟 ...

  7. Java集合框架:Collections工具类

    java.util.Collections工具类提供非常多实用的方法.使得程序员操作集合类的时候更加的方便easy,这些方法都是静态的. 整个Collections工具类源代码几乎相同有4000行.我 ...

  8. [Google Guava] 2.3-强大的集合工具类:java.util.Collections中未包含的集合工具

    原文链接 译文链接 译者:沈义扬,校对:丁一 尚未完成: Queues, Tables工具类 任何对JDK集合框架有经验的程序员都熟悉和喜欢java.util.Collections包含的工具方法.G ...

  9. java:容器/集合(Map(HashMap,TreeMap)Collection和Collections,(Collection-value();)

    *Map接口:采用是键值对的方式存放数据.无序 HashMap: *常见的实现类: *--HashMap:基于哈希表的 Map 接口的实现. *常用的构造方法: * HashMap()构造一个具有默认 ...

随机推荐

  1. linu查看系统用户与显示命令行提示符格式信息

    目录 一:查看系统用户whoami 二:显示命令行提示符格式信息变量 一:查看系统用户whoami whoami : 当前窗口登录的用户 who : 当前用户登录系统的终端 作用: 显示当前用户登录了 ...

  2. strace -cp 诊断

    strace -c php do.php 各项含义如下: - % time:执行耗时占总时间百分比 - seconds:执行总时间 - usecs/call:单个命令执行时间 - calls:调用次数 ...

  3. 社交网络分析的 R 基础:(二)变量与字符串

    本章会从 R 语言中最基本的数据类型开始介绍,在此之后就可以开始 R 语言实践了.对社交网络分析而言,我们在处理字符串上所花费的时间要远远大于处理数字的时间,因此本章还会介绍常用的字符串处理操作. 变 ...

  4. Lesson8——Pandas reindex重置索引

    pandas目录 1 简介 重置索引(reindex)可以更改原 DataFrame 的行标签或列标签,并使更改后的行.列标签与 DataFrame 中的数据逐一匹配.通过重置索引操作,您可以完成对现 ...

  5. HowToDoInJava Java 教程·翻译完成

    原文:HowToDoInJava 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远. ApacheCN 学习资源 目录 核心 Java 教程 什 ...

  6. Maven 项目报出警告:Warning:java: source value 1.5 is obsolete and will be removed in a future release

    感谢原文作者:Hxinguan 原文链接:https://www.cnblogs.com/Hxinguan/p/6132446.html 问题: 1.创建maven项目的时候,jdk版本是1.5版本, ...

  7. 导出SQL语句

    转载请注明来源:https://www.cnblogs.com/hookjc/ if(!($db_conn=mysql_connect($db_server,$db_name,$db_pass))){ ...

  8. FidBugs的使用学习

    是什么? 静态代码分析器,它检查类或者JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题.Findbugs自带检测器,其中有60余种Bad practice,80余种Correctness, ...

  9. iOS block的用法 by -- 周傅琦君

    X.1 初探Block X.1.1 宣告和使用Block 我们使用「^」运算子来宣告一个block变数,而且在block的定义最后面要加上「;」来表示一个完整的述句(也就是将整个block定义视为前面 ...

  10. 《PHP程序员面试笔试宝典》——如何巧妙地回答面试官的问题?

    如何巧妙地回答面试官的问题? 本文摘自<PHP程序员面试笔试宝典> 所谓"来者不善,善者不来",程序员面试中,求职者不可避免地需要回答面试官各种"刁钻&quo ...