- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我不明白这个输出。
因为我创建了另外 4 个 key (瓶子 b1、b2、b3、b4)。
4个键还有其他属性。
所以,我认为这段代码打印了 4 个输出。
但是这段代码只打印 3 个输出。
为什么???
package map;
import java.util.Map;
import java.util.TreeMap;
public class TreeMapExample {
public static void main(String[] args) {
Bottle b1 = new Bottle("red", 15);
Bottle b2 = new Bottle("black", 10);
Bottle b3 = new Bottle("white", 20);
Bottle b4 = new Bottle("green", 10);
// Bottle b4 = new Bottle("red", 10);
// Bottle b4 = new Bottle("red", 11);
TreeMap<Bottle, Integer> treeMap = new TreeMap<Bottle, Integer>();
treeMap.put(b1, 10);
treeMap.put(b2, 15);
treeMap.put(b3, 5);
treeMap.put(b4, 20);
for (Map.Entry<Bottle, Integer> entry : treeMap.entrySet()) {
System.out.println(entry.getKey() + " - " + entry.getValue());
}
}
}
class Bottle implements Comparable<Bottle> {
String name;
int size;
Bottle(String name, int size) {
this.name = name;
this.size = size;
}
@Override
public int compareTo(Bottle o) {
return this.size - o.size;
}
@Override
public String toString(){
return name + " bottle";
}
}
如果 Bottle b4 = new Bottle("green", 10);
或 Bottle b4 = new Bottle("red", 10);
结果是
black bottle - 20
red bottle - 10
white bottle - 5
但是如果Bottle b4 = new Bottle("red", 11);
结果是
black bottle - 15
red bottle - 20
red bottle - 10
white bottle - 5
我不明白这个输出...
最佳答案
TreeMap
考虑了您在自定义比较器中使用的键的相等性。因为您的两个瓶子是相等的(因为它们具有相同的尺寸值),所以更换一个。在本例中:绿色被黑色替换。
看看treeMap.put返回了什么:
Returns: the previous value associated with key, or null if there was no mapping for key. (A null return can also indicate that the map previously associated null with key.)
https://docs.oracle.com/javase/8/docs/api/java/util/TreeMap.html#put-K-V-
如果我们输出 treeMap.put(...)
返回的内容,我们会看到我们得到四个 null
并且在最后一种情况下,我们得到 15
。因此,用 b4
替换 b2
因为它们是相等的:
System.out.println(treeMap.put(b1, 10));
System.out.println(treeMap.put(b2, 15));
System.out.println(treeMap.put(b3, 5));
System.out.println(treeMap.put(b4, 20));
给出:
null
null
null
15
关于java - 我不明白输出这段代码。 ( map ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56087347/
我是一名优秀的程序员,十分优秀!