集合之不可变集合
不可变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 ); } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律