【发布时间】:2017-05-02 05:51:40
【问题描述】:
将值放入 Map 中的键中而不是在键中添加值
public static void putKey() {
TreeMap<BigDecimal,String> trmap = new TreeMap<BigDecimal,String>();
MathContext mc = new MathContext(2);
BigDecimal b1 = new BigDecimal(3.1,mc);
BigDecimal b2 = new BigDecimal(3.10,mc);
BigDecimal b3 = new BigDecimal(3.2,mc);
BigDecimal b4 = new BigDecimal(3.3,mc);
BigDecimal b5 = new BigDecimal(3.4,mc);
trmap.put(b1, "3.1");
trmap.put(b2, "3.10");
trmap.put(b3, "3.2");
trmap.put(b4, "3.3");
trmap.put(b5, "3.4");
System.out.println(trmap);
}
在上面的地图3.10中没有添加key。
所以我尝试计算两个值的哈希码
public static void putKey() {
TreeMap<BigDecimal, String> trmap = new TreeMap<BigDecimal, String>();
MathContext mc = new MathContext(2);
BigDecimal b1 = new BigDecimal(3.1, mc);
BigDecimal b2 = new BigDecimal(3.10, mc);
BigDecimal b3 = new BigDecimal(3.2, mc);
BigDecimal b4 = new BigDecimal(3.3, mc);
BigDecimal b5 = new BigDecimal(3.4, mc);
trmap.put(b1, "3.1");
trmap.put(b2, "3.10");
trmap.put(b3, "3.2");
trmap.put(b4, "3.3");
trmap.put(b5, "3.4");
System.out.println(trmap);
int hashcodeb1 = b1.hashCode();
int hashcodeb2 = b2.hashCode();
System.out.println("3.1-->" + hashcodeb1);
System.out.println("3.10-->" + hashcodeb2);
}
两个哈希码都计算相同的值我的要求是我想把两个值都放在我的地图中,所以在其他论坛帖子的帮助下,看起来我必须覆盖 hashCode() 方法,但它返回 int 为价值,我不确定它是否对我有帮助。
我在课堂上写过hashCode()
public class BigDecimalMap {
public BigDecimalMap() {
super();
}
public static void main(String[] args) {
BigDecimalMap bigDecimalMap = new BigDecimalMap();
putKey();
}
public static void putKey() {
TreeMap<BigDecimal, String> trmap = new TreeMap<BigDecimal, String>();
MathContext mc = new MathContext(2);
BigDecimal b1 = new BigDecimal(3.1, mc);
BigDecimal b2 = new BigDecimal(3.10, mc);
BigDecimal b3 = new BigDecimal(3.2, mc);
BigDecimal b4 = new BigDecimal(3.3, mc);
BigDecimal b5 = new BigDecimal(3.4, mc);
trmap.put(b1, "3.1");
trmap.put(b2, "3.10");
trmap.put(b3, "3.2");
trmap.put(b4, "3.3");
trmap.put(b5, "3.4");
System.out.println(trmap);
int hashcodeb1 = b1.hashCode();
int hashcodeb2 = b2.hashCode();
System.out.println("3.1-->" + hashcodeb1);
System.out.println("3.10-->" + hashcodeb2);
}
public int hashCode() {
return 1;
}
}
请帮助确定如何添加这两个值。
【问题讨论】:
-
你觉得
3.1和3.10有什么区别? -
如何更改哈希码,以便根据字符串长度 + BigDecimal.hashCode 计算?
-
从某个可能不是大十进制的位置检索一些值可能是字符串,我必须根据这两个值做出决定,早些时候我尝试过浮点和双精度,但它们不起作用。所以我在帖子中阅读了使用 BigDecimal 进行计算
-
那是我想要覆盖它但如何? @stackoverflow.com/users/2310289/scary-wombat
-
为什么您认为需要将
BigDecimals 与这些小数的字符串表示形式相关联?
标签: java hashmap bigdecimal treemap