有关java的引用传递,直接操作对象本身。直接删除BE的value中某值

本文深入探讨了Java中HashSet的操作方式,特别是如何通过引用传递来直接修改原始集合,展示了不同条件下的元素处理逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HashSet<String> refRegions = BE.get(regionName);
   HashSet<String> values = new HashSet<String>();
   values.addAll(refRegions);
   
   if(values.contains("AllValues")){
    refRegions.clear();
    refRegions.add("AllValues");
   }
   else{
    for(String region : values){
     
     refRegions.remove(region);
     String[] regionFormat = region.split("_");
     if(regionFormat.length==2)
      region = regionFormat[1];
     else region = regionFormat[0];
     String key;
     String value;
     switch(region.length()){
     case 2: value=countryName+"_"+region;
       refRegions.add(value); break;
     case 4: value=provinceName+"_"+region;
       key=countryName+"_"+region.substring(0, 2);
       this.addClause(key, value);break;
     case 6: value=cityName+"_"+region;
       key=provinceName+"_"+region.substring(0, 4);
       this.addClause(key, value);break;
     default: value=townName+"_"+region;
       key=cityName+"_"+region.substring(0, 6);
       this.addClause(key, value);break;
     }
    }
   }

代码中,注意,refRegions,并为初始化一个空间,而是直接作为引用指向BE中regionName对应的value。此时,操作refRegions,就是直接操作BE的value,所以:

refRegions.remove(region);相当于,BE.get(regionName).remove(region)

而this.addClause(key, value) 是直接操作BE得到的结果。

从中看出,java引用传递,会直接操作对象本身

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值