我正在尝试从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():
}
}
}
您需要将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():
}
}
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();
}
正如@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分。
for (Info info : k.values()){
System.out.println(info.getNames();
}
你去吧
有关如何处理地图的更多信息,请查看dokumentation
你有两个选择。循环使用for循环或迭代器。对于循环很容易,如@Rainer所示,但Iterator更强大,因为它允许您删除您是一个元素并具有更多功能。