是一个集合不可变

    xiaoxiao2025-03-28  11

    a.通过final关键词来修饰,让map变成一个不可变的map。

    private static final Map<Integer,String> map = new HashMap<>(); static { map.put(1,"红楼梦"); map.put(2,"水浒"); } public static void main(String[] args){ map.put(2,"三国"); System.out.println(map.get(2)); //输出三国,证明map集合被修改了。 }

    结果:map的值还是被改变。

    b.通过集合的工具类Collections

    private static Map<Integer,String> map = new HashMap<>(); static { map.put(1,"红楼梦"); map.put(2,"水浒"); map= Collections.unmodifiableMap(map); } public static void main(String[] args){ System.out.println(map.get(2)); map.put(2,"三国"); System.out.println(map.get(2)); }

    运行报异常:Exception in thread "main" java.lang.UnsupportedOperationException     at java.util.Collections$UnmodifiableMap.put(Collections.java:1457)     at test.Test1.main(Test1.java:18) //不能被修改

    利用集合工具类collections.unmodifiableList也可以使一个list 集合不可以改变

    private static List<String> list = new ArrayList<>(); static { list.add("王熙凤"); list.add("林黛玉"); list=Collections.unmodifiableList(list); } public static void main(String[] args){ System.out.println(list.size()); //输出2 list.add("薛宝钗"); System.out.println(list.size()); //异常 }

    运行异常:Exception in thread "main" java.lang.UnsupportedOperationException     at java.util.Collections$UnmodifiableCollection.add(Collections.java:1055)     at test.Test1.main(Test1.java:25)

    利用集合工具类collections.unmodifiableSet也可以使一个list 集合不可以改变

    private static Set<String> set = new HashSet<>(); static{ set.add("林冲"); set=Collections.unmodifiableSet(set); } public static void main(String[] args){ System.out.println(set.size()); //1 set.add("吴用"); System.out.println(set.size()); //异常 }

    运行异常:Exception in thread "main" java.lang.UnsupportedOperationException     at java.util.Collections$UnmodifiableCollection.add(Collections.java:1055)     at test.Test1.main(Test1.java:30)

     

    最新回复(0)