Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java map getOrDefault返回对象时如何返回整数_Java - Fatal编程技术网

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();
或者您也可以使用具有最大压力的单参数构造函数来创建deault
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();

为什么不在
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();
或者您也可以使用具有最大压力的单参数构造函数来创建deault
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();
由于为未知键返回
null
,因此可以使用

final int-someTirePressure=可选的空压(tires.get(“米其林”))
.map(轮胎::getPressure)
.orElse(默认轮胎压力);
由于为未知键返回
null
,因此可以使用

final int-someTirePressure=可选的空压(tires.get(“米其林”))
.map(轮胎::getPressure)
.orElse(默认轮胎压力);

谢谢,这很有效!我可能会向轮胎添加另一个构造函数,该构造函数接受一个整数作为压力,因为当我只查找默认压力时,不需要在此处设置maxPressure。是的,这也是最好的方法,我将更新我的答案@LemonPickleStanks,这很有效!我可能会向轮胎添加另一个构造函数,该构造函数接受一个整数作为压力,因为当我只查找默认压力时,不需要在此处设置maxPressure。是的,这也是最好的方法,我将更新我的答案@LemonPickles