是一个集合不可变

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值