首页 > 其他分享 >treemap与hashcode

treemap与hashcode

时间:2023-01-13 11:25:07浏览次数:40  
标签:return Object treemap hashcode new o2 o1

有个需求  需要将map排序

 

我就用了treemap

 

一个map列表   将总计字段放在最后面  其他无所谓

 

最开始是这样写的

Map<String,Object> temp = new TreeMap<>(new Comparator(){

@Override
public int compare(Object o1, Object o2) {
if(o2.toString().equals("总计")){
return -1;
}else{
return o2.hashCode()&Integer.MAX_VALUE;
}
}
});


后面运行的时候出现bug

明明应该很长的列表 总是只有 一个键值对 key:"" val"随便"

一顿debug
发现是比较器除了问题

一顿百度发现 坏就坏在空字符 hashcode treemap比较器三个东西合起来了

空字符的哈市code是0,treemap里的 比较器返回0 意思是 两者相同

所以空字符把其他键全覆盖了

后面改成

这样子就没问题了
Map<String,Object> temp = new TreeMap<>(new Comparator(){

@Override
public int compare(Object o1, Object o2) {
if(o2.toString().equals("总计")){
return -1;
}else{
return (o1.hashCode()-o2.hashCode())&Integer.MAX_VALUE;
}
}
});


还是姿势水平不够

这bug叠的

treemap 的比较器


public class TreeMapSortComparator implements Comparator<TreeMapSort> {
@Override
public int compare(TreeMapSort o1, TreeMapSort o2) {
int num = o1.getAge() - o2.getAge();
if(num==0){//为0时候,两者相同:
return 0;
}else if(num>0){//大于0时,后面的参数小:
return 1;
}else{//小于0时,前面的参数小:
return -1;
}

}
————————————————
版权声明:本文为CSDN博主「一叶一菩提魁」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/A980719/article/details/120369766






标签:return,Object,treemap,hashcode,new,o2,o1
From: https://www.cnblogs.com/bawanglong168/p/17049044.html

相关文章

  • Java 如何重写对象的 equals 方法和 hashCode 方法
    前言:Java对象如果要比较是否相等,则需要重写equals方法,同时重写hashCode方法,而且hashCode方法里面使用质数31。接下来看看各种为什么。一、需求:对比两个对象......
  • HashMap 和 treemap
    Map接口概述将键映射到值的对象一个映射不能包含重复的键每个键最多只能映射到一个值Map接口和Collection接口的不同Map是双列的,Col......
  • 说说hashCode() 和 equals() 之间的关系?
    上一篇关于介绍Object类下的几种方法时面试题时,提到equals()和hashCode()方法可能引出关于“hashCode()和equals()之间的关系?”的面试题,本篇来解析一下这道基础面试题。......
  • TreeMap使用案例-多个映射(中级版)
    细节问题请看简单版publicclassWordMapn{publicstaticMap<String,List<String>>computeAdjacentWords(List<String>theWords){Map<String,L......
  • TreeMap使用案例-多个映射(简单版)
    题目,找出单词表中每个单词只有一个字母不同的所有单词(简单版,花费时间多)importjava.util.ArrayList;importjava.util.List;importjava.util.Map;importjava.util.Tree......
  • 集合之Map【TreeMap】
    packagecom.Lucky.Map;importjava.util.Comparator;importjava.util.TreeMap;/*TreeMap:底层结构和TreeSet一样是红黑树可以排序/无重......
  • 【03期】如何决定使用 HashMap 还是 TreeMap?
    问:如何决定使用HashMap还是TreeMap?TreeMap<K,V>的Key值是要求实现java.lang.Comparable,所以迭代的时候TreeMap默认是按照Key值升序排序的;TreeMap的实现是基于红黑树结......
  • 有序Map集合:LinkedHashMap和TreeMap该如何选用
    文章目录​​前言​​​​一、为什么HashMap是无序的​​​​二、LinkedHashMap如何保证有序性​​​​三、TreeMap的底层原理​​​​四、LinkedHashMap和TreeMap比较​​......
  • String的hashCode可能会返回负数&解决方案
    String的hashCode可能会返回负数&解决方案产生原因:可以查看StringhashCode()的源码,会发现,它使用的是int类型,这个时候如果字符串过长,则会溢出publicinthashCode......
  • equals() and hashCode() methods in Java
    https://www.geeksforgeeks.org/equals-hashcode-methods-java/ Java.lang.objecthastwoveryimportantmethodsdefined:publicbooleanequals(Objectobj)andp......