集合之不可变集合

不可变List集合:

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集合:

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集合:

    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 @ 2022-12-12 10:18  唯易人生  阅读(27)  评论(0)    收藏  举报