空集合
Collections.EMPTY_LIST,Collections.emptyList()——返回只读
的空LIST 集合
Collections.EMPTY_MAP,Collections.emptyMap()——返回只读
的空MAP集合
Collections.EMPTY_SET,Collections.emptySet()返回只读
的空SET集合
所谓的空集合指的是没有元素在这些集合中,特别需要主要的是返回的集合都是只读的。以下代码会抛出UnsupportedOperationException
异常。
-------------------------------------------------------
public
static
void
main(String[] args)
{
List children
=
Collections.EMPTY_LIST;
children.add(
new
HashMap());
}
-------------------------------------------------------
Collections.emptyList(),Collections.emptySet(),Collections.emptyMap()由于支持泛型使用起来会更方便,例如
--------------------------------------------------------------
List<String> s = Collections.emptyList();
---------------------------------------------------------------
单元素集合
Collections中的单元素集合指的是集合只有一个元素而且集合只读。
Collections.singletonList——用来生成只读
的单一元素的List
Collections.singletonMap——用来生成只读
的单Key和Value组成的Map
Collections.singleton——用来生成只读
的单一元素的Set
只读集合
Collections提供了生成几种生成只读集合的方法unmodifiableCollection,unmodifiableList,unmodifiableMap,unmodifiableSet,
unmodifiableSortedMap,unmodifiableSortedSet。这些集合一旦初始化以后就不能修改,任何修改这些集合的方法都会抛出
UnsupportedOperationException异常。
Checked集合(Checked Collections)
Checked集合具有检查插入集合元素类型的特性,例如当我们设定checkedList中元素的类型是String的时候,如果插入起来类型的元素就会抛出
ClassCastExceptions异常,Java5中提供泛型的功能,泛型功能能够在代码编译阶段就约束集合中元素的类型,但有些时候声明的集合可能是raw集合,
编译阶段的类型约束就不起作用了,这个时候Checked集合就能起到约束集合中元素类型的作用。
Collections中提供了以下生成Checked集合的方法
checkedCollection,checkedList,checkedMap,checkedSet,checkedSortedMap,checkedSortedSet
同步集合(Synchronized Collections)
Collections的synchronizedXxxxx系列方法顾名思义会返回同步化集合类(SynchronizedMap,
SynchronizedList等等)。这些集合类内部实现都是通过一个mutex(互斥体)来实现对这些集合操作的同步化。
Enumeration接口
从JDK1.0开始Java就提供了Enumeration
接口。Collections中list和enumeration和Enumeration接口相关。
list(Enumeration<T> e) 方法用于有Enumeration接口中产生一个List
———————————————————————————————————————
public void demonstrateEnumerationToList()
{
log("===== Demonstrate Collections.list(Enumeration) =====", System.out);
final Enumeration properties = System.getProperties().propertyNames();
final List propertiesList = Collections.list(properties);
log(propertiesList.toString(), System.out);
}
————————————————————————————————————————
enumeration(Collection<T> c) 方法用于基于Collection返回Enumeration。
——————————————————————————————————————
public void demonstrateCollectionToEnumeration()
{
log("===== Demonstrate Collections.enumeration(Collection) =====", System.out);
final Enumeration books = Collections.enumeration(this.favoriteBooks);
while (books.hasMoreElements())
{
log(books.nextElement().toString(), System.out);
}
————————————————————————————————————————————
}
查找替换
fill——使用指定元素替换指定列表中的所有元素。
frequency——返回指定 collection 中等于指定对象的元素数。
indexOfSubList—— 返回指定源列表中第一次出现指定目标列表的起始位置,如果没有出现这样的列表,则返回 -1。
lastIndexOfSubList——返回指定源列表中最后一次出现指定目标列表的起始位置,如果没有出现这样的列表,则返回-1。
max—— 根据元素的自然顺序,返回给定 collection 的最大元素。
min——根据元素的自然顺序 返回给定 collection 的最小元素。
replaceAll——使用另一个值替换列表中出现的所有某一指定值。
集合排序
Collections还提供了集中对集合进行排序的方法。
reverse——对List中的元素倒序排列
shuffle——对List中的元素随即排列,这个方法让我想到了Apple的iPod Shuffle
sort——对List中的元素排序
swap——交换List中某两个指定下标位元素在集合中的位置。
rotate——循环移动。循环移动这个方法让人比较难以理解,下面的例子就会让你一下子就理解这个方法的含义。
——————————————————————————————————————————————————————————————————————
假设 list
包含 [t, a, n, k, s]
。在调用 Collections.rotate(list, 1)
(或 Collections.rotate(list, -4)
)之后,list
将包含 [s, t, a, n, k]
。
——————————————————————————————————————————————————————————————————————
其他方法
binarySearch——使用二进制搜索算法来搜索指定列表,以获得指定对象。
addAll——将所有指定元素添加到指定 collection 中。
copy——将所有元素从一个列表复制到另一个列表。
disjoint——如果两个指定 collection 中没有相同的元素,则返回 true。
nCopies——返回由指定对象的 n 个副本组成的不可变列表。
参考资料
http://java.sun.com/javase/6/docs/api/java/util/Collections.html
http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/java/util/Collections.html
java.util.Collections类包的学习
The Java Collections Class
分享到:
相关推荐
Java.util包是Java标准库中的核心包之一,它包含了大量用于通用编程的类和接口,是Java开发中不可或缺的一部分。...掌握java.util包的使用是每个Java开发者必备的技能,能有效提升代码质量和效率。
Java.util包是Java标准库中的核心包之一,它包含了大量用于日常编程的工具类和接口。这个包在Java 2版本中得到了显著增强...通过熟练掌握和使用java.util包中的类和接口,开发者能够更加高效地处理数据和实现复杂逻辑。
在大多数情况下,使用非线程安全的`ArrayList`配合适当的同步策略(例如,`Collections.synchronizedList()`)可能更合适。 - 不要忽视了`Vector`的容量增量特性,它可以在设计高性能系统时起到优化作用。 - 当你...
### Java.util包源码知识点概览 #### 一、Overview `java.util`包是Java标准库中的一个重要组成部分,提供了大量的实用工具类和接口来处理集合数据类型、日期时间操作、随机数生成等功能。这份PDF文档包含了`java....
首先,`Iterator`接口是Java Collections Framework中的一个基础接口,它提供了一种遍历集合元素的方式。与旧版的`Enumeration`接口相比,`Iterator`增加了在迭代过程中删除元素的功能,并且方法命名更加直观。`...
### Java的.awt包和.java.util包的区别 #### Java.util包详解 Java.util包是一个非常重要的标准库之一,其中包含了大量有用的类和接口,为开发者提供了丰富的功能。此包中的类和接口可以分为以下几大类别: 1. **...
Collections.sort(list); for (int i = 0; i < array.length; i++) { System.out.println(list.get(i)); } ``` 结果:23, 111, 112, 231, 456 * 混排(Shuffling) 使用shuffle方法可以打乱在一个List中的任何...
- **背景**:传统的 `Hashtable` 和 `Collections.synchronizedMap` 使用单个全局锁来确保数据的一致性,这意味着在同一时间只有一个线程能够执行读写操作,从而极大地限制了并发能力。 - **解决方法**:`...
25. **`java.util.Collections.unmodifiable*`**: 创建只读集合视图。 26. **`java.util.Collections.checked*`**: 创建检查类型安全的集合。 27. **`java.util.Locale`**: 处理国际化和本地化需求。 28. **`java...
7. **实用工具类**:`java.util.Arrays`和`java.util.Collections`提供静态方法,用于操作数组和集合,如排序、复制和填充。 8. **并发编程**:`java.util.concurrent`包虽然不在`java.util`下,但与之紧密相关,...
5. **线程安全性**:`ArrayDeque`并不是线程安全的,如果在多线程环境下使用,需要额外的同步机制,如使用`synchronized`关键字或`Collections.synchronizedDeque()`方法进行包装。 6. **效率对比**:由于其数组...
10. **`java.util.Collections`与`java.util.Comparator`**:Collections类提供了对集合的静态方法,如排序、反转、填充等;Comparator接口用于自定义排序规则。 11. **`java.util.regex`包**:支持正则表达式,...
4. **`java.util.Date`** 和 **`java.time`** 包:处理日期和时间,`java.time`包是Java 8引入的新API,更强大且易于使用。 5. **`java.util.Random`**:生成随机数,适用于各种随机算法或模拟场景。 6. **`java....
11. `java.util.Collections`:Collections类提供了静态方法来操作集合,如排序、查找和转换。 12. `java.util.Date`:Date类表示特定的瞬间,精确到毫秒。 13. `java.util.HashSet`:HashSet是基于哈希表的Set...
- `java.util.Date` 是旧版的日期时间API,使用不便,现在已经推荐使用`java.time`包中的类,如`LocalDate`, `LocalTime`, `LocalDateTime`, `ZonedDateTime`等,这些类提供了更强大和友好的日期时间操作。...
2. **`java.util.Collections`**:它是针对集合框架的工具类,提供了对List、Set、Map等各种集合的操作,如排序(`sort()`)、填充(`fill()`)和集合转换(`copy()`)等。 3. **`java.lang.Math`**:提供了各种...
3. **`java.util.Collections`**: 类似于`Arrays`,但针对集合接口(如`List`、`Set`和`Map`)。它提供了排序、填充、反转和查找最小/最大元素等操作。 4. **`java.util.Date` 和 `java.time` 包**: `Date`是旧...
Java.util 源码分析 Java.util 包是 Java 核心库的重要组成部分,它包含了许多用于日常编程的工具类和接口,如集合框架、日期时间处理、随机数生成、事件处理等。深入理解这个包的源码对于提升Java开发者的技能至关...