假设我有一个轮胎构造函数,它采用两个整数,pressure
和 maxPressure
public class Tire {
private int pressure;
private int maxPressure;
public Tire(int pressure, int maxPressure){
this.pressure = pressure;
this.maxPressure = maxPressure;
}
public int getPressure(){return pressure;}
public int getMaxPressure(){return maxPressure;}
}
在我的主类中,我可以将一个新的 Tire
添加到名为 tires
的 HashMap
中,pressure
为25 和 maxPressure
为 32。
public Map<String, Tire> tires = new HashMap<>;
public int defaultTirePressure = 28;
tires.put("Goodyear", new Tire(25, 30));
我希望能够获取 Tire
对象的 pressure()
(如果它存在)或使用 defaultTirePressure
//should be 25
tires.getOrDefault("Goodyear", defaultTirePressure).getPressure();
//should be 28 because there is no Michelin tire defined in tires
tires.getOrDefault("Michelin", defaultTirePressure).getPressure();
显然这不起作用,因为 defaultTirePressure
是一个整数并且 tires
包含 Tire
对象。
这行得通,但是有点长:
//will set someTirePressure to 25
if(tires.containsKey("Goodyear")){
someTirePressure = tires.getValue("Goodyear").getPressure();
}else{
someTirePressure = defaultTirePressure;
}
//will set anotherTirePressure to 28 because there is no Michelin tire defined in tires
if(tires.containsKey("Michelin")){
anotherTirePressure = tires.getValue("Goodyear").getPressure();
}else{
anotherTirePressure = defaultTirePressure;
}
在这个例子中就没有办法使用getOrDefault了吗?我觉得我可能已经回答了我自己的问题。
最佳答案
为什么不在getOrDefault
方法中为Tire
对象提供默认压力作为默认值
tires.getOrDefault("Michelin", new Tire(25, defaultTirePressure)).getPressure();
你也可以有默认的 Tire
对象
public final Tire defaultTire = new Tire(25,28);
tires.getOrDefault("Michelin", defaultTire).getPressure();
或者您也可以使用具有最大压力的单参数构造函数来创建默认 Tire
对象
public Tire(int maxPressure) {
this.maxPressure = maxPressure;
}
public final Tire defaultTire = new Tire(28);
tires.getOrDefault("Michelin", defaultTire).getPressure();
关于java - map getOrDefault返回对象时如何返回整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58108029/