Skip to content

Commit 78b37db

Browse files
committed
🎉 init
1 parent b599736 commit 78b37db

File tree

3 files changed

+306
-8
lines changed

3 files changed

+306
-8
lines changed

README.md

Lines changed: 281 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,311 @@
11
# java-util-collections-explain
2-
explain for java.util.Collections
2+
explain for java.util.Collections(JDK 1.8)
33

4-
## sort(List<T> list)
4+
## 其他
5+
6+
### sort(List<T> list)
57

68
- `list` 排序
79
- 实体需要实现 `Comparable` 接口
810

9-
## sort(List<T> list, Comparator<? super T> c)
11+
### sort(List<T> list, Comparator<? super T> c)
1012

1113
- `list` 排序
1214
- 排序规则器 `Comparator`
1315

14-
## binarySearch(List<? extends Comparable<? super T>> list, T key)
16+
### binarySearch(List<? extends Comparable<? super T>> list, T key)
1517

1618
- `List` 实现了 `RandomAccess` 接口或者数量小于 `5000` 按照下标查找,其他情况按照迭代器查找。
1719

18-
## binarySearch(List<? extends T> list, T key, Comparator<? super T> c)
20+
### binarySearch(List<? extends T> list, T key, Comparator<? super T> c)
1921

2022
-`binarySearch(List<? extends Comparable<? super T>> list, T key)` 不同的是是否有实现排序规则
2123

22-
## reverse(List<?> list)
24+
### reverse(List<?> list)
2325

2426
- `list` 反序
2527
- `List` 实现了 `RandomAccess` 接口或者数量小于 `18` ,循环一半去调换位置的值, 其他情况使用迭代器。
2628

27-
## shuffle(List<?> list)
29+
### shuffle(List<?> list)
2830

2931
- 乱序 `list`
3032
- `List` 实现了 `RandomAccess` 接口或者数量小于 `5`,位置替换,其他情况使用迭代器。
3133

32-
## shuffle(List<?> list, Random rnd)
34+
### shuffle(List<?> list, Random rnd)
3335

3436
-`shuffle(List<?> list)` 增加了参数 `Random`
3537

38+
### swap(List<?> list, int i, int j)
39+
40+
- 调换元素值的位置
41+
42+
### fill(List<? super T> list, T obj)
43+
44+
- 填充 `List`
45+
- `List` 实现了 `RandomAccess` 接口或者数量小于 `25` 直接填充,其他情况使用迭代器。
46+
47+
### copy(List<? super T> dest, List<? extends T> src)
48+
49+
- 拷贝一个 `List` 的元素到另外一个 `List`
50+
-`List` 长度补得大于目标 `List` 长度
51+
-`List` 长度少于 `10` 或者 源 `List` 和 目标 `List` 都实现了 `RandomAccess` 接口,使用下标直接拷贝设置,其他情况使用迭代器
52+
53+
### min(Collection<? extends T> coll)
54+
55+
- 查询集合内最小值
56+
57+
### min(Collection<? extends T> coll, Comparator<? super T> comp)
58+
59+
- 查询集合内最小值
60+
- 自己实现了比较器
61+
62+
### max(Collection<? extends T> coll)
63+
64+
- 查询集合内最大值
65+
66+
### max(Collection<? extends T> coll, Comparator<? super T> comp)
67+
68+
- 查询集合内最大值
69+
- 自己实现了比较器
70+
71+
### rotate(List<?> list, int distance)
72+
73+
-`List` 向右移动 `distance` 个位置,负数向左移动.
74+
- `List` 都实现了 `RandomAccess` 接口或者长度小于 `100`,使用硬编码的设置位置的值.其他的递归式的调换,类似归并排序.
75+
76+
### replaceAll(List<T> list, T oldVal, T newVal)
77+
78+
- 替换 `List` 内容为新的值
79+
- `List` 长度小于 `11` 或者实现了 `RandomAccess` 接口,使用下标去查找设置,其他按照迭代器设置.
80+
81+
### indexOfSubList(List<?> source, List<?> target)
82+
83+
- 目标 `List` 是否是 源 `List` 的子集,返回子集的下标.
84+
-`List` 长度少于 `35`, 或者 目标 `List` 和 源 `List` 都实现了 `RandomAccess` 接口, 采用下标形式遍历,其他采用迭代器遍历.
85+
86+
### lastIndexOfSubList(List<?> source, List<?> target)
87+
88+
-`indexOfSubList(List<?> source, List<?> target)`,反向查找
89+
90+
## 不可修改
91+
92+
### unmodifiableCollection(Collection<? extends T> c)
93+
94+
- 返回一个不可修改的集合,不能添加删除元素.
95+
96+
### unmodifiableSet(Set<? extends T> s)
97+
98+
- 返回一个不可修改的 `Set`
99+
100+
### unmodifiableSortedSet(SortedSet<T> s)
101+
102+
- 返回一个不可修改的排序 `Set`
103+
104+
### unmodifiableNavigableSet(NavigableSet<T> s)
105+
106+
- 返回一个不可修改的 `NavigableSet`
107+
108+
### unmodifiableList(List<? extends T> list)
109+
110+
- 返回一个不可修改的 `List`
111+
112+
### unmodifiableMap(Map<? extends K, ? extends V> m)
113+
114+
- 返回一个不可修改的 `Map`
115+
116+
### unmodifiableSortedMap(SortedMap<K, ? extends V> m)
117+
118+
- 返回一个不可修改的 `SortedMap`
119+
120+
### unmodifiableNavigableMap(NavigableMap<K, ? extends V> m)
121+
122+
- 返回一个不可修改的 `NavigableMap`
123+
124+
## 加锁
125+
126+
### synchronizedCollection(Collection<T> c)
127+
128+
- 返回一个加锁的集合
129+
130+
### synchronizedCollection(Collection<T> c, Object mutex)
131+
132+
- 返回一个加锁的集合,自己实现锁标志
133+
134+
### synchronizedSet(Set<T> s)
135+
136+
- 返回一个加锁的 `Set`
137+
138+
### synchronizedSet(Set<T> s, Object mutex)
139+
140+
- 返回一个加锁的 `Set`,自己实现锁标志
141+
142+
### synchronizedSortedSet(SortedSet<T> s)
143+
144+
- 返回一个加锁的 `SortedSet`
145+
146+
### synchronizedNavigableSet(NavigableSet<T> s)
147+
148+
- 返回一个加锁的 `NavigableSet`
149+
150+
### synchronizedList(List<T> list)
151+
152+
- 返回一个加锁的 `List`
153+
154+
### synchronizedList(List<T> list, Object mutex)
155+
156+
- 返回一个加锁的 `List`,自己实现锁标志
157+
158+
### synchronizedMap(Map<K,V> m)
159+
160+
- 返回一个加锁的 `Map`
161+
162+
### synchronizedSortedMap(SortedMap<K,V> m)
163+
164+
- 返回一个加锁的 `SortedMap`
165+
166+
### synchronizedNavigableMap(NavigableMap<K,V> m)
167+
168+
- 返回一个加锁的 `NavigableMap`
169+
170+
## 受检查的集合
171+
172+
### checkedCollection(Collection<E> c, Class<E> type)
173+
174+
- 返回一个受检查的集合
175+
176+
### zeroLengthArray(Class<T> type)
177+
178+
- 返回一个零长度的数组
179+
180+
### checkedQueue(Queue<E> queue, Class<E> type)
181+
182+
- 返回一个受检查的 `Queue`
183+
184+
### checkedSet(Set<E> s, Class<E> type)
185+
186+
- 返回一个受检查的 `Set`
187+
188+
### checkedSortedSet(SortedSet<E> s, Class<E> type)
189+
190+
- 返回一个受检查的 `SortedSet`
191+
192+
### checkedNavigableSet(NavigableSet<E> s, Class<E> type)
193+
194+
- 返回一个受检查的 `NavigableSet`
195+
196+
### checkedList(List<E> list, Class<E> type)
197+
198+
- 返回一个受检查的 `List`
199+
200+
### checkedMap(Map<K, V> m, Class<K> keyType, Class<V> valueType)
201+
202+
- 返回一个受检查的 `Map`
203+
204+
### checkedSortedMap(SortedMap<K, V> m, Class<K> keyType, Class<V> valueType)
205+
206+
- 返回一个受检查的 `SortedMap`
207+
208+
### checkedNavigableMap(NavigableMap<K, V> m, Class<K> keyType, Class<V> valueType)
209+
210+
- 返回一个受检查的 `NavigableMap`
211+
212+
## 空值
213+
214+
### emptyIterator()
215+
216+
- 返回一个空的迭代器
217+
218+
### emptyListIterator()
219+
220+
- 返回一个空的 `List` 迭代器
221+
222+
### emptyEnumeration()
223+
224+
- 返回一个空的 `Enumeration` 迭代器
225+
226+
### emptySet()
227+
228+
- 返回一个空的 `Set`
229+
230+
### emptySortedSet()
231+
232+
- 返回一个空的 `SortedSet`
233+
234+
### emptyNavigableSet()
235+
236+
- 返回一个空的 `NavigableSet`
237+
238+
### emptyList()
239+
240+
- 返回一个空的 `List`
241+
242+
### emptyMap()
243+
244+
- 返回一个空的 `Map`
245+
246+
### emptySortedMap
247+
248+
- 返回一个空的 `SortedMap`
249+
250+
### emptyNavigableMap()
251+
252+
- 返回一个空的 `NavigableMap`
253+
254+
## singleton
255+
256+
### singleton(T o)
257+
258+
- 返回只有一个元素的 `Set`
259+
260+
### singletonList(T o)
261+
262+
- 返回只有一个元素的 `List`
263+
264+
### singletonMap(K key, V value
265+
266+
- 返回只有一个元素的 `Map`
267+
268+
## 其他
269+
270+
### nCopies(int n, T o)
271+
272+
- 返回一个填充了同一个元素的 `List`
273+
274+
### reverseOrder()
275+
276+
- 返回一个排序规则器
277+
278+
### reverseOrder(Comparator<T> cmp)
279+
280+
- 返回一个相反的排序规则器
281+
282+
### enumeration(final Collection<T> c)
283+
284+
- 返回一个集合的 `Enumeration`
285+
286+
### list(Enumeration<T> e)
287+
288+
- `Enumeration` 转换成 `ArrayList`
289+
290+
### frequency(Collection<?> c, Object o)
291+
292+
- 统计集合里包含的某个元素个数
293+
294+
### disjoint(Collection<?> c1, Collection<?> c2)
295+
296+
- 集合没有相同的元素
297+
298+
### addAll(Collection<? super T> c, T... elements)
299+
300+
- 向集合添加元素,全部添加成功返回 `true`
301+
302+
### newSetFromMap(Map<E, Boolean> map)
303+
304+
- 方法调用返回的集合的映射支持
305+
306+
### asLifoQueue(Deque<T> deque)
307+
308+
- 方法用于获取一个 `Deque` 视图,作为一个后进先出(`LIFO`)队列
36309

37310
## LICENSE
38311

java-util-collections-explain.iml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<module type="WEB_MODULE" version="4">
3+
<component name="NewModuleRootManager" inherit-compiler-output="true">
4+
<exclude-output />
5+
<content url="file://$MODULE_DIR$" />
6+
<orderEntry type="inheritedJdk" />
7+
<orderEntry type="sourceFolder" forTests="false" />
8+
</component>
9+
</module>
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package edu.maskleo.collections.explain;
2+
3+
import java.util.Arrays;
4+
import java.util.Collections;
5+
import java.util.Date;
6+
import java.util.List;
7+
8+
public class CheckedCollectionTest {
9+
10+
public static void main(String[] args) {
11+
List<String> list = Arrays.asList("12", "23");
12+
List<String> safeList = Collections.checkedList(list, String.class);
13+
List obj = safeList;
14+
obj.add(new Date());
15+
}
16+
}

0 commit comments

Comments
 (0)