Map根据value取key的值,并且当key唯一,但是value重复时,取相应值的一些解决方案

  Map是通过键值对来储存数据的(key和value),数据可以根据key映射到它的value;

Map<Integer,String> keyAndValue = new LinkedHashMap<>();
            keyAndValue.put(1,"重复数据");
            keyAndValue.put(2,"重复数据");
            keyAndValue.put(3,"重复数据");
            keyAndValue.put(4,"特有数据");
  •   当要取key对应的值时是比较简单的,通过 get(key)方法就可以取到值,如通过
    String value = keyAndValue.get(1)

    即可得到key为1时,Map对应的数据,即此时 value的值为  重复数据;

  • 当要根据值取key时,就没有上面的直接的方法,而是要经过遍历获取
    String valueWanted = "重复数据";
    List<Integer> keyList = new ArrayList<>();
    for (Map.Entry<Integer,String> keyEntry : keyAndValue.entrySet()) {
          Integer keyWanted = 0;
          String getValue = keyEntry.getValue();
          if (valueWanted.equals(getValue)){
                  keyWanted = keyEntry.getKey();
                  keyList.add(keyWanted);
                  }
        }

    根据此方法则可得到满足条件的key的一个List;

  • 当需要满足一定条件的key时,可以在上一方法遍历时的 if 里条件判断加上相应的约束;也可以查找到一个符合条件的key的时候 break 跳出循环,即可限制只返回一个key;

  • 思路:当涉及先后操作的时候,可以取不同记录的开始时间来进行比较,以获得想要的数据。

    if (nextId.equals(Id)&& actHiActinstStartTime >= hisStartTime){
         key = actHiActinstEntry.getKey();
         break;
       }

     

  • 另外,当返回所有满足条件的key的一个集合的时候,也可以调用集合原有的方法来筛选自己想要的数据

    Collections.max(keyList);
    Collections.min(keyList);

    如以上两个方法,分别可以获得返回集合的最大值、最小值。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值