获取HASHMAP的值

时间:2016-05-19 09:04:25

标签: java dictionary hashmap keyvaluepair

我正在尝试从hashmap访问一对的值。 我有一个Map,其中Integer是关键,info是值。 我想遍历地图并从info对象中获取特定数据字段(namePlayer)。

class info{
    public String namePlayer;
    public String knowledge; 
    public int coins;

    info(String nom,String coneixament,int monedes){
        namePlayer=nom;
        knowledge=coneixament;
        coins=monedes;
    }

    void setMonedes(int monedes){
        coins=monedes;
    }

    void setConeixement(String confianza){
        knowledge=confianza;
    }
    String getConeixament(){
        return knowledge;
    }
    String getNames(){
        return name;
    }
}
public class Memory{
    private Map<Integer,info> k;

    Memory(){
        k= new HashMap<Integer, info>();
    }

    void getValues(){
        Iterator it = _infoPartida.entrySet().iterator();
        while (it.hasNext()) {
            Map.Entry pair = (Map.Entry)it.next();
            info s = pair.getValues();// error
            String name = s.getNames():
         }
    }
}

5 个答案:

答案 0 :(得分:0)

您需要将常规信息添加到Iterator

void getValues(){
    Iterator<info> it = k.entrySet().iterator();
    while (it.hasNext()) {
        Map.Entry pair = it.next();
        info s = pair.getValue();
        String name = s.getNames():
    }
}

答案 1 :(得分:0)

  1. 类名在Java中是大写(信息 - 不是信息)
  2. k是变量的可怕名称
  3. 这在Java中很容易

    for (Info info : k.values()){
        System.out.println(info.getNames();
    }
    
  4. 你去吧。

    有关如何处理地图的更多信息,请查看dokumentation

答案 2 :(得分:0)

void getValues(){
    Iterator it = _infoPartida.entrySet().iterator();
    while (it.hasNext()) {
        Map.Entry pair = (Map.Entry)it.next();
        info s = pair.getValues();// error
        String name = s.getNames():
     }
}

应该是

public String getPlayerName(int index) {
   info i = k.get(index);
   return i.getNames();
}

答案 3 :(得分:0)

正如@Lee先生指出的那样......你必须在你的Iterator ...和Map.Entry

中添加泛型
void getValues(){
    Iterator<Map.Entry<Integer,info>> it = _infoPartida.entrySet().iterator();
    while (it.hasNext()) {
        Map.Entry<Integer,info> pair = it.next();
        info s = pair.getValue();
        String name = s.getNames();
     }
}

假设k_infoPartida
另外,考虑@ Rainer的3分。

答案 4 :(得分:0)

这里有两种选择。循环使用for循环或迭代器。对于循环很容易,如@Rainer所示,但Iterator更强大,因为它允许您删除您是一个元素并具有更多功能。