如何从带有对象的hashmap中执行GET方法?

时间:2016-04-16 18:08:58

标签: java

我试图从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){
        }***

    }

3 个答案:

答案 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());
}
}