博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Map去重,去重value相同的元素,保留key最小的那个值
阅读量:5132 次
发布时间:2019-06-13

本文共 1396 字,大约阅读时间需要 4 分钟。

Map<Integer,String>,Integer代表时间撮,String代表文本信息

去重函数:就是删除Map中value相同的元素,只保留key最小的那个元素

public static Map<Integer,String> RemoveRepFromMap(Map<Integer,String> map){

  Set<Entry<Integer,String>> set = map.entrySet();

  List<Entry<Integer,String>> list = new ArrayList<Entry<Integer,String>>(set);

  Collections.sort(list,new Comparator<Entry<Integer,String>>(){

    //重载compare函数  对list集合进行排序,根据value值进行排序,
    public int compare(Entry<Integer,String> entry1,Entry<Integer,String> entry2){
      return Integer.valueOf(entry1.getValue().hashCode()-entry2.getValue().hashCode());
    }
  });

  for(int i=0;i<list.size();i++){//删除重复的元素

    Integer key = list.get(i).getKey();
    String value = list.get(i).getValue();

    int j=i+1;//map中的下一个

    if(j<list.size()){
      Integer next_key = list.get(j).getKey();
      String next_value = list.get(j).getValue();

      if(value == next_value){

      if(key.hashCode() < next_key.hashCode()){map.remove(next_key);list.remove(j);
      }else{
        map.remove(key);list.remove(i);
      }
      i--;
    }
  }
  return map;
}

 Map<Integer,String>首先的特性就是:键key如果相同,将会把原来的key进行覆盖掉的,所以key一定不会重复

几个函数的作用说明:

Map.Entry 表示单个映射关系即一个key+value
entrySet()方法 返回此映射中包含的映射关系的 set 视图集合,其实说白了就是    多个  key+value 的集合, 解释下这里面的set,只有当key和value都一一对应相同的时候,才不会被重复计算【而这种情况根本就不会存到map里面去,因为他会覆盖原来的key】,如果key不同,键相同,依然是在entrySet里面的

转载于:https://www.cnblogs.com/wust221/p/5414566.html

你可能感兴趣的文章
软件是天时、地利、人和的产物!
查看>>
python定时清空本目录下除本脚本外的全部文件
查看>>
【PHP】在目标字符串指定位置插入字符串
查看>>
【JS】jQuery设置定时器,访问服务器(PHP示例)配合微信、支付宝原生支付,跳转web网页...
查看>>
实验四2
查看>>
在小程序开发的新风口 看华为云如何助立创科技抢占市场红利
查看>>
第一次博客随笔:苏钰冰
查看>>
HIS-DELPHI-读取数据库配置
查看>>
如何引入iconfont图标与Element-UI组件
查看>>
ArcMap合并之路 -- 该段路合并成一个完整的路
查看>>
HTML5 a标签的down属性进行图片下载
查看>>
js日期比较
查看>>
0119——UIImageView的一些属性 和 简单动画实现
查看>>
Castle ActiveRecord学习(八)事务
查看>>
for循环的break和continue
查看>>
Win32串行通信中文版(Serial Communications In Win32)
查看>>
go语言的null值问题
查看>>
mpvue——引入antv-F2图表
查看>>
在UC浏览器打开链接唤醒app,假设没有安装该app,则跳转到appstore下载该应用
查看>>
skozrloug
查看>>