获取HASHMAP的值

问题描述 投票:-1回答:5

我正在尝试从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():
         }
    }
}
java dictionary hashmap keyvaluepair
5个回答
0
投票

您需要将generics信息添加到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():
    }
}

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

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分。


0
投票
  1. 类名在Java中是大写的(信息 - 不是信息)
  2. k是变量的可怕名称
  3. 这在Java中非常容易 for (Info info : k.values()){ System.out.println(info.getNames(); }

你去吧

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.