小编use*_*619的帖子

Java TreeMap包含一个键,但containsKey调用返回false(即使键是完全相同的未更改对象)

为什么循环keySetTreeMap并得到一个.containsKey == false

for (Object thisObject : map.keySet()) {
    if (!map.containsKey(thisObject)) {
        System.out.println("This line should be never reached.");
    }
}
Run Code Online (Sandbox Code Playgroud)

经过很多次,很多不同的迭代和调用此行被击中.A map.get(thisObject)会回来null.但调试显示密钥(相同的引用,值和散列)和实际值在地图中.地图很小(25个元素)TreeMap<Long, Double>

更新:

正如@rgettman theres 所猜测的那样Comparator,在构造TreeMap时使用了一个自定义排序(没有看到它,因为它是从另一个类构造的).这个比较器只是(我猜)从这里复制粘贴

改变Comparator:

  public int compare(Object a, Object b) {

    if((Double)base.get(a) > (Double)base.get(b)) {
      return 1;
    } else if((Double)base.get(a) == (Double)base.get(b)) {
      return 0;
    } else {
      return -1;
    }
  }
Run Code Online (Sandbox Code Playgroud)

...
    } else if(base.get(a).equals(base.get(b))) { …
Run Code Online (Sandbox Code Playgroud)

java map treemap containskey keyset

5
推荐指数
1
解决办法
5083
查看次数

如何在Codename One中更改SpanLabel的字体?

为什么我不能设置Codename One的SpanLabel的字体?

SpanLabel title = new SpanLabel("SpanLabel");
title.getAllStyles().setFont(Font.createSystemFont(Font.FACE_SYSTEM, Font.STYLE_BOLD, Font.SIZE_LARGE));
Run Code Online (Sandbox Code Playgroud)

不行.

codenameone

3
推荐指数
1
解决办法
283
查看次数

标签 统计

codenameone ×1

containskey ×1

java ×1

keyset ×1

map ×1

treemap ×1