From f103464b44e27019d7cc4d47ff3813091921c150 Mon Sep 17 00:00:00 2001 From: jiuban0513 <571126022@qq.com> Date: Fri, 29 Mar 2019 17:48:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0Collections=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E5=B8=B8=E8=A7=81=E7=94=A8=E6=B3=95=E5=B9=B6=E4=B8=94=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E4=BA=86=E4=B8=80=E4=B8=AA=E9=94=99=E8=AF=AF=E8=BE=93?= =?UTF-8?q?=E5=87=BA=E7=BB=93=E6=9E=9C=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Basis/Arrays,CollectionsCommonMethods.md | 67 ++++++++++++++++++- 1 file changed, 66 insertions(+), 1 deletion(-) diff --git a/docs/java/Basis/Arrays,CollectionsCommonMethods.md b/docs/java/Basis/Arrays,CollectionsCommonMethods.md index ec083552..f3b97c5e 100644 --- a/docs/java/Basis/Arrays,CollectionsCommonMethods.md +++ b/docs/java/Basis/Arrays,CollectionsCommonMethods.md @@ -69,6 +69,11 @@ void rotate(List list, int distance)//旋转。当distance为正数时,将list Collections.shuffle(arrayList); System.out.println("Collections.shuffle(arrayList):"); System.out.println(arrayList); + + // void swap(List list, int i , int j),交换两个索引位置的元素 + Collections.swap(arrayList, 2, 5); + System.out.println("Collections.swap(arrayList, 2, 5):"); + System.out.println(arrayList); // 定制排序的用法 Collections.sort(arrayList, new Comparator() { @@ -152,6 +157,66 @@ synchronizedMap(Map m) //返回由指定映射支持的同步(线程安 synchronizedSet(Set s) //返回指定 set 支持的同步(线程安全的)set。 ``` +### Collections还可以设置不可变集合,提供了如下三类方法: + +```java +emptyXxx(): 返回一个空的、不可变的集合对象,此处的集合既可以是List,也可以是Set,还可以是Map。 +singletonXxx(): 返回一个只包含指定对象(只有一个或一个元素)的不可变的集合对象,此处的集合可以是:List,Set,Map。 +unmodifiableXxx(): 返回指定集合对象的不可变视图,此处的集合可以是:List,Set,Map。 +上面三类方法的参数是原有的集合对象,返回值是该集合的”只读“版本。 +``` + +**示例代码:** + +```java + ArrayList arrayList = new ArrayList(); + arrayList.add(-1); + arrayList.add(3); + arrayList.add(3); + arrayList.add(-5); + arrayList.add(7); + arrayList.add(4); + arrayList.add(-9); + arrayList.add(-7); + HashSet integers1 = new HashSet<>(); + integers1.add(1); + integers1.add(3); + integers1.add(2); + Map scores = new HashMap(); + scores.put("语文" , 80); + scores.put("Java" , 82); + + //Collections.emptyXXX();创建一个空的、不可改变的XXX对象 + List list = Collections.emptyList(); + System.out.println(list);//[] + Set objects = Collections.emptySet(); + System.out.println(objects);//[] + Map objectObjectMap = Collections.emptyMap(); + System.out.println(objectObjectMap);//{} + + //Collections.singletonXXX(); + List> arrayLists = Collections.singletonList(arrayList); + System.out.println(arrayLists);//[[-1, 3, 3, -5, 7, 4, -9, -7]] + //创建一个只有一个元素,且不可改变的Set对象 + Set> singleton = Collections.singleton(arrayList); + System.out.println(singleton);//[[-1, 3, 3, -5, 7, 4, -9, -7]] + Map nihao = Collections.singletonMap("1", "nihao"); + System.out.println(nihao);//{1=nihao} + + //unmodifiableXXX();创建普通XXX对象对应的不可变版本 + List integers = Collections.unmodifiableList(arrayList); + System.out.println(integers);//[-1, 3, 3, -5, 7, 4, -9, -7] + Set integers2 = Collections.unmodifiableSet(integers1); + System.out.println(integers2);//[1, 2, 3] + Map objectObjectMap2 = Collections.unmodifiableMap(scores); + System.out.println(objectObjectMap2);//{Java=82, 语文=80} + + //添加出现异常:java.lang.UnsupportedOperationException +// list.add(1); +// arrayLists.add(arrayList); +// integers.add(1); +``` + ## Arrays类的常见操作 1. 排序 : `sort()` 2. 查找 : `binarySearch()` @@ -296,7 +361,7 @@ System.out.println(Arrays.toString(strs));//[abcdeag, abcdefg, abcdehg] int[] h = { 1, 2, 3, 3, 3, 3, 6, 6, 6, }; int i[] = Arrays.copyOf(h, 6); System.out.println("Arrays.copyOf(h, 6);:"); - // 输出结果:993333 + // 输出结果:123333 for (int j : i) { System.out.print(j); }