我试图从hashmap中获取posto的id来比较另一个类中的值:
我的班级Posto:
public class Posto {
private int id;
private Point posicao;
private int capacidade;
private int quantidadeAtual;
private int gastoMedio;
public Posto(int id, Point posicao, int capacidade, int quantidadeAtual, int gastoMedio) {
this.id = id;
this.posicao = posicao;
this.capacidade = capacidade;
this.quantidadeAtual = quantidadeAtual;
this.gastoMedio = gastoMedio;
}
public int getPostoId() {
return id;
}
public void setPostoId(int id) {
this.id = id;
}
public Point getPostoPosicao() {
return posicao;
}
public void setPostoPosicao(Point posicao) {
this.posicao = posicao;
}
public int getPostoCapacidade() {
return capacidade;
}
public void setPostoCapacidade(int capacidade) {
this.capacidade = capacidade;
}
public int getPostoQuantidadeAtual() {
return quantidadeAtual;
}
public void setPostoQuantidadeAtual(int quantidadeAtual) {
this.quantidadeAtual = quantidadeAtual;
}
public int getPostoGastoMedio() {
return gastoMedio;
}
public void setPostoGastoMedio(int gastoMedio) {
this.gastoMedio = gastoMedio;
}
我的MAIN课程,我填写这样的哈希图:
public class Main {
public static void main(String[] args) {
Central c = new Central( new Point(20, 300) );
setupCentral( c );
MenuCentral mc = new MenuCentral( c );
mc.menuPrincipal();
}
private static void setupCentral(Central c) {
//Posto p1 = new Posto(1,new Point(2,3),24,40,30);
c.addPosto(new Posto(1,new Point(10,10),10,200,180));
c.addPosto(new Posto(2,new Point(700,15),15,300,200));
}
}
现在我的CENTRAL类我有方法“addPosto”来填充hashmap,我需要方法“getPosto”来获取其他类中的id进行比较,但我不能这样做,我有点儿对哈希图感到困惑。
public class Central {
private Point posicao;
private Map<Integer, Object> camioes = new HashMap<Integer,Object>( );
private Map<Integer,Object> postos = new HashMap<Integer,Object>( );
public Central(Point posicao) {
this.posicao = posicao;
}
public Point getPosicao() {
return posicao;
}
public void setPosicao(Point posicao) {
this.posicao = posicao;
}
public void addPosto( Posto p ){
postos.put(p.getPostoId(), p);
}
***public int getPosto (int id){
}***
}
答案 0 :(得分:0)
您的地图只有一种值类型。
private final Map<Integer, Posto> postos = new HashMap<>();
您只需添加此类型。
public void addPosto( Posto p ){
postos.put(p.getPostoId(), p);
}
所以期待这种类型是有意义的。
public Posto getPosto(int id) {
return postos.get(id);
}
如果你想保持地图原样(这是一个坏主意恕我直言,你可以使用一个明确的演员)
public Posto getPosto(int id) {
return (Posto) postos.get(id);
}
这是不必要的冗长和容易出错。在某些时候,这样做几乎肯定会导致一个永远不会发生的错误。
答案 1 :(得分:0)
public Posto getPosto (int id)
{
return postos.get(id);
}
答案 2 :(得分:0)
你正在将posto类添加到hashmap使用泛型
private Map<Integer, Posto> camioes = new HashMap<Integer,Posto>( );
private Map<Integer,Posto> postos = new HashMap<Integer,Posto>( );
you can iterate the hashmap and get all the values
for (Integer key : camioes.keySet()) {
Posto p = postos.get(key);
System.out.println(p.getPostoId());
}
}