Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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)

AltStyle によって変換されたページ (->オリジナル) /