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里面的

Map去重,去重value相同的元素,保留key最小的那个值的更多相关文章

  1. 【方法1】删除Map中Value反复的记录,而且仅仅保留Key最小的那条记录

    介绍 晚上无聊的时候,我做了一个測试题,測试题的大体意思是:删除Map中Value反复的记录,而且仅仅保留Key最小的那条记录. 比如: I have a map with duplicate val ...

  2. 【方法2】删除Map中Value反复的记录,而且仅仅保留Key最小的那条记录

    依据guigui111111的建议:先把Map按Key从大到小排序,然后再把Key和Value互换.这也是一种非常好的思路,我写了一下代码,顺便贴上来,供大家參考与分享. package shuai. ...

  3. js javascript map函数去重功能的使用实例

    js javascript map函数去重功能的使用实例 先上一个实战例子代码 var map = new Map(); for(var i=0; i<=9; i++){ map.set(i,i ...

  4. 信1705-2 软工作业最大重复词查询思路: (1)将文章(一个字符串存储)按空格进行拆分(split)后,存储到一个字符串(单词)数组中。 (2)定义一个Map,key是字符串类型,保存单词;value是数字类型,保存该单词出现的次数。 (3)遍历(1)中得到的字符串数组,对于每一个单词,考察Map的key中是否出现过该单词,如果没出现过,map中增加一个元素,key为该单词,value为1(

    通过学习学会了文本的访问,了解一点哈希表用途.经过网上查找做成了下面查询文章重复词的JAVA程序. 1 思 思路: (1)将文章(一个字符串存储)按空格进行拆分(split)后,存储到一个字符串(单词 ...

  5. 如何通过源生js获取一个元素的具体样式值 /* getCss:获取指定元素的具体样式的属性值 curElement:[dom对象] attr:[string] */

    昨天的博客些的真的是惨不忍睹啊!!!但是我的人生宗旨就是将不要脸的精神进行到底,所以,今天我又来了.哈哈哈哈哈! 方法一:元素.style.属性名:(这个有局限性--只能获取行内样式的值,对于样式表或 ...

  6. 初探oracle删除重复记录,只保留rowid最小的记录

    如题,初探oracle删除重复记录,只保留rowid最小的记录(rowid可以反映数据插入到数据库中的顺序) 一.删除重复记录可以使用多种方法,如下只是介绍了两种方法(exist和in两种). 1.首 ...

  7. HTML元素margin、padding的默认值

    HTML元素margin.padding的默认值 element margin(单位像素) padding html 0 0 body 8 0 div 0 0 h1 21 0 h2 19 0 19 0 ...

  8. oracle删除重复记录,只保留rowid最小的记录

    初探oracle删除重复记录,只保留rowid最小的记录   如题,初探oracle删除重复记录,只保留rowid最小的记录(rowid可以反映数据插入到数据库中的顺序) 一.删除重复记录可以使用多种 ...

  9. IE中float元素如果同时设置了margin值,此时margin的值会变为双倍的解决方法

    IE中float元素如果同时设置了margin值,此时margin的值会变为双倍, 解决办法: 是在该元素中加入display:inline.

随机推荐

  1. Spring Boot版本号说明

    Spring Boot的版本选择一般是这样的,如下图: 那版本号后面的英文代表什么含义呢? 具体含义,如下文所示: SNAPSHOT:快照版,表示开发版本,随时可能修改: M1(Mn):M是miles ...

  2. idea启动java项目,使用调试会占用更多内存

    idea启动java项目,使用调试会占用更多内存

  3. 请解释一下css3的flexbox(弹性盒布局模型),以及适用场景

    弹性盒模型是c3规范的新的布局方式,该布局模型的目的是提供一种更加高效的方式来对容器的条目进行布局.对齐和分配空间.在传统的布局中,block布局是把块级元素在垂直方向从上向下一次排列的,而inlin ...

  4. 剑指offer 6:链表(从头到尾打印链表)

    链表的数据结构 struct ListNode { int value; ListNode* next; }; 那么在链表的末尾添加一个节点的代码如下: void insert(ListNode** ...

  5. 【border树】【P2375】动物园

    Description 给定一个字符串 \(S\),对每个前缀求长度不超过该前缀一半的公共前后缀个数. 共有 \(T\) 组数据,每组数据的输出是 \(O(1)\) 的. Limitations \( ...

  6. 【组合数学】【P5520】[yLOI2019] 青原樱

    A [yLOI2019] 青原樱 Background 星川之下皆萤火尘埃 我独行在人潮你天真而待 相遇若是借丹青着色 青原上 绯樱如海 --银临<青原樱>(Cover 人衣大人) Des ...

  7. Android Studio 之 GridView

    1. 数据源 ArrayList Cursor 2. 适配器 Adapter ArrayAdapter SmipleAdapter SmipleCursorAdapter BaseAdapter

  8. 课后选做题-MyOD

    课后选做题-MyOD od命令的了解 功能 od命令用于将指定文件内容以八进制.十进制.十六进制.浮点格式或ASCII编码字符方式显示,通常用于显示或查看文件中不能直接显示在终端的字符.od命令系统默 ...

  9. 【技术博客】Laravel5.1文件上传单元测试

    Laravel5.1文件上传单元测试 作者:ZGJ 在软工第三阶段中,我彻底解决了上一阶段一直困扰我的文件上传单元测试问题,在这里做一个总结. 注:下文介绍中,方法一方法二实现简单但有一定的限制条件( ...

  10. 三个基于.net的浏览器内核使用的比较

    最近做模拟登陆发帖相关的项目 分别尝试了基于IE .NET自带的 webbrowser 和 基于WebKit 的WebKit.NET和openWebkitSharp 最开始肯定是用的.NET自带的we ...