集合之不可变集合

不可变List集合:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package com.Lucky;
//System.out.println("------------拓展:创建不可变的list集合---------------");
 
import java.util.Iterator;
import java.util.List;
 
public class NoValList {
    public static void main(String[] args) {
        //创建不可变的list集合--
        List<String> list = List.of("张三", "李四", "王五");
 
        //遍历
        for (String s : list) {
            System.out.println(s);
        }
        System.out.println("-------------------------");
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
        System.out.println("-------------------------");
        Iterator<String> iter = list.iterator();
        while (iter.hasNext()){
            System.out.println(iter.next());
        }
 
 
        System.out.println("-----------不可变展示--------------");
        list.add("唯易");
        list.remove("张三");
        list.set(1,"唯易");
 
        /**
         * 无法进行其他的操作
         * 只能查询
         */
 
    }
 
 
}

  

不可变Set集合:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package com.Lucky;
 
import java.util.Set;
 
/*
不可变的Set集合
        注意点:必须保证Set集合中存在唯一的值,否则会报错
 */
public class NoValSet {
    public static void main(String[] args) {
        //创建
        Set<String> setVar = Set.of("唯易");
 
        //遍历
        for (String s : setVar) {
            System.out.println(s);
        }
 
 
        //报错:只能查询
        setVar.add("BUG");
        setVar.remove("BUG");
        setVar.clear();
 
    }
}

不可变Map集合:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package com.Lucky;
 
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
 
/*
不可变Map集合
           注意点:1.  键不可以重复
                 2.   最大传递的参数数量只有20个【底层无法采用可变参数】
                 3.如果实在是要传递超过20个参数【10对键值对】的话,请用Map.ofEntries();
  */
public class NoValMap {
    public static void main(String[] args) {
        Map<String, Integer> mapVar = Map.of("唯易", 99999,"张三",66666);
 
 
        Set<String> strings = mapVar.keySet();
        for (String str : strings) {
            System.out.println(str+":"+mapVar.get(str));
        }
        System.out.println("*************************************");
        Set<Map.Entry<String, Integer>> ent = mapVar.entrySet();
        for (Map.Entry<String, Integer> entry : ent) {
            String k=entry.getKey();
            int v=entry.getValue();
 
            System.out.println(k+":"+v);
        }
 
 
        ///////////////报错/////////////////
//        System.out.println("----------报错-------------------");
//        mapVar.put("王五",888888);
//        mapVar.remove("王五");
//        mapVar.clear();
 
 
        System.out.println("--------Map.ofEntries();----------");
        HashMap<String,Integer> strM=new HashMap<>();
        strM.put("we",1);
        strM.put("v",2);
        strM.put("cdv",3);
        strM.put("g",4);
        strM.put("bny",5);
        strM.put("ib",6);
        strM.put("bth",7);
        strM.put("rtu",8);
        strM.put("df",9);
        strM.put("mhhgfd",10);
        strM.put("ddfghjkgff",11);
        //获取键值对对象
        Set<Map.Entry<String, Integer>> entries = strM.entrySet();
        //创建符合Map.ofEntries();储存的键值对对象
        Map.Entry[] Ent = new Map.Entry[11];
        //创建变量接收
        Map.Entry[] ries = entries.toArray(Ent);
 
        Map<String, Integer> mapOf = Map.ofEntries(ries);  //参数时键值对类型
         /*
                       |
                       |
                       |
                       简化
          */
      //  Map.ofEntries(strM.entrySet().toArray(new Map.Entry[0]));
   /*
                       |
                       |
                       |
                       再简化
                JDK10之后再出现的方法:copyOf()
          */
        Map<String, Integer> map = Map.copyOf(strM);
        //此时的map就是不可变的map集合了
 
        //报错
        mapOf.put("kaokao",4567);
        map.put("kaokao",4567);
 
 
 
 
    }
}

  

posted @   唯易人生  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示