@@ -69,6 +69,11 @@ void rotate(List list, int distance)//旋转。当distance为正数时,将list
6969 Collections . shuffle(arrayList);
7070 System . out. println(" Collections.shuffle(arrayList):" );
7171 System . out. println(arrayList);
72+
73+ // void swap(List list, int i , int j),交换两个索引位置的元素
74+ Collections . swap(arrayList, 2 , 5 );
75+ System . out. println(" Collections.swap(arrayList, 2, 5):" );
76+ System . out. println(arrayList);
7277
7378 // 定制排序的用法
7479 Collections . sort(arrayList, new Comparator<Integer > () {
@@ -152,6 +157,66 @@ synchronizedMap(Map<K,V> m) //返回由指定映射支持的同步(线程安
152157synchronizedSet(Set<T > s) // 返回指定 set 支持的同步(线程安全的)set。
153158```
154159
160+ ### Collections还可以设置不可变集合,提供了如下三类方法:
161+
162+ ``` java
163+ emptyXxx(): 返回一个空的、不可变的集合对象,此处的集合既可以是List ,也可以是Set ,还可以是Map 。
164+ singletonXxx(): 返回一个只包含指定对象(只有一个或一个元素)的不可变的集合对象,此处的集合可以是:List ,Set ,Map 。
165+ unmodifiableXxx(): 返回指定集合对象的不可变视图,此处的集合可以是:List ,Set ,Map 。
166+ 上面三类方法的参数是原有的集合对象,返回值是该集合的”只读“版本。
167+ ```
168+
169+ ** 示例代码:**
170+
171+ ``` java
172+ ArrayList<Integer > arrayList = new ArrayList<Integer > ();
173+ arrayList. add(- 1 );
174+ arrayList. add(3 );
175+ arrayList. add(3 );
176+ arrayList. add(- 5 );
177+ arrayList. add(7 );
178+ arrayList. add(4 );
179+ arrayList. add(- 9 );
180+ arrayList. add(- 7 );
181+ HashSet<Integer > integers1 = new HashSet<> ();
182+ integers1. add(1 );
183+ integers1. add(3 );
184+ integers1. add(2 );
185+ Map scores = new HashMap ();
186+ scores. put(" 语文" , 80 );
187+ scores. put(" Java" , 82 );
188+
189+ // Collections.emptyXXX();创建一个空的、不可改变的XXX对象
190+ List<Object > list = Collections . emptyList();
191+ System . out. println(list);// []
192+ Set<Object > objects = Collections . emptySet();
193+ System . out. println(objects);// []
194+ Map<Object , Object > objectObjectMap = Collections . emptyMap();
195+ System . out. println(objectObjectMap);// {}
196+
197+ // Collections.singletonXXX();
198+ List<ArrayList<Integer > > arrayLists = Collections . singletonList(arrayList);
199+ System . out. println(arrayLists);// [[-1, 3, 3, -5, 7, 4, -9, -7]]
200+ // 创建一个只有一个元素,且不可改变的Set对象
201+ Set<ArrayList<Integer > > singleton = Collections . singleton(arrayList);
202+ System . out. println(singleton);// [[-1, 3, 3, -5, 7, 4, -9, -7]]
203+ Map<String , String > nihao = Collections . singletonMap(" 1" , " nihao" );
204+ System . out. println(nihao);// {1=nihao}
205+
206+ // unmodifiableXXX();创建普通XXX对象对应的不可变版本
207+ List<Integer > integers = Collections . unmodifiableList(arrayList);
208+ System . out. println(integers);// [-1, 3, 3, -5, 7, 4, -9, -7]
209+ Set<Integer > integers2 = Collections . unmodifiableSet(integers1);
210+ System . out. println(integers2);// [1, 2, 3]
211+ Map<Object , Object > objectObjectMap2 = Collections . unmodifiableMap(scores);
212+ System . out. println(objectObjectMap2);// {Java=82, 语文=80}
213+
214+ // 添加出现异常:java.lang.UnsupportedOperationException
215+ // list.add(1);
216+ // arrayLists.add(arrayList);
217+ // integers.add(1);
218+ ```
219+
155220## Arrays类的常见操作
1562211 . 排序 : ` sort() `
1572222 . 查找 : ` binarySearch() `
@@ -296,7 +361,7 @@ System.out.println(Arrays.toString(strs));//[abcdeag, abcdefg, abcdehg]
296361 int [] h = { 1 , 2 , 3 , 3 , 3 , 3 , 6 , 6 , 6 , };
297362 int i[] = Arrays . copyOf(h, 6 );
298363 System . out. println(" Arrays.copyOf(h, 6);:" );
299- // 输出结果:993333
364+ // 输出结果:123333
300365 for (int j : i) {
301366 System . out. print(j);
302367 }
0 commit comments