Java map getOrDefault返回对象时如何返回整数
假设我有一个轮胎的构造函数,它取两个整数,Java map getOrDefault返回对象时如何返回整数,java,Java,假设我有一个轮胎的构造函数,它取两个整数,pressure和maxpresse public class Tire { private int pressure; private int maxPressure; public Tire(int pressure, int maxPressure){ this.pressure = pressure; this.maxPressure = maxPressure; } public int getPressur
pressure
和maxpresse
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;}
}
//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();
在我的主要课程中,我可以将一个新的Tire
添加到名为tires
的HashMap
中,其中pressure
为25,而maxpression
为32
public Map<String, Tire> tires = new HashMap<>;
public int defaultTirePressure = 28;
tires.put("Goodyear", new Tire(25, 30));
显然,这不起作用,因为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();
public Tire(int maxPressure) {
this.maxPressure = maxPressure;
}
public final Tire defaultTire = new Tire(28);
tires.getOrDefault("Michelin", defaultTire).getPressure();
或者您也可以使用具有最大压力的单参数构造函数来创建deaultTire
对象
public final Tire defaultTire = new Tire(25,28);
tires.getOrDefault("Michelin", defaultTire).getPressure();
public Tire(int maxPressure) {
this.maxPressure = maxPressure;
}
public final Tire defaultTire = new Tire(28);
tires.getOrDefault("Michelin", defaultTire).getPressure();
为什么不在
getOrDefault
方法中为Tire
对象提供默认压力作为默认值
tires.getOrDefault("Michelin", new Tire(25, defaultTirePressure)).getPressure();
您还可以使用默认的Tire
对象
public final Tire defaultTire = new Tire(25,28);
tires.getOrDefault("Michelin", defaultTire).getPressure();
public Tire(int maxPressure) {
this.maxPressure = maxPressure;
}
public final Tire defaultTire = new Tire(28);
tires.getOrDefault("Michelin", defaultTire).getPressure();
或者您也可以使用具有最大压力的单参数构造函数来创建deaultTire
对象
public final Tire defaultTire = new Tire(25,28);
tires.getOrDefault("Michelin", defaultTire).getPressure();
public Tire(int maxPressure) {
this.maxPressure = maxPressure;
}
public final Tire defaultTire = new Tire(28);
tires.getOrDefault("Michelin", defaultTire).getPressure();
由于为未知键返回null
,因此可以使用
final int-someTirePressure=可选的空压(tires.get(“米其林”))
.map(轮胎::getPressure)
.orElse(默认轮胎压力);
由于为未知键返回null
,因此可以使用
final int-someTirePressure=可选的空压(tires.get(“米其林”))
.map(轮胎::getPressure)
.orElse(默认轮胎压力);
谢谢,这很有效!我可能会向轮胎添加另一个构造函数,该构造函数接受一个整数作为压力,因为当我只查找默认压力时,不需要在此处设置maxPressure。是的,这也是最好的方法,我将更新我的答案@LemonPickleStanks,这很有效!我可能会向轮胎添加另一个构造函数,该构造函数接受一个整数作为压力,因为当我只查找默认压力时,不需要在此处设置maxPressure。是的,这也是最好的方法,我将更新我的答案@LemonPickles