我有一个Hashmap,我正在努力研究如何打印单个键和值。我可以打印所有这些,但想知道如何打印其中一个感谢
import java.util.HashMap;
public class Coordinate {
static class Coords {
int x;
int y;
public boolean equals(Object o) {
Coords c = (Coords) o;
return c.x == x && c.y == y;
}
public Coords(int x, int y) {
super();
this.x = x;
this.y = y;
}
public int hashCode() {
return new Integer(x + "0" + y);
}
public String toString()
{
return x + ";" + y;
}
}
public static void main(String args[]) {
HashMap<Coords, String> map = new HashMap<Coords, String>();
map.put(new Coords(65, 72), "Dan");
map.put(new Coords(68, 78), "Amn");
map.put(new Coords(675, 89), "Ann");
System.out.println(map.size());
System.out.println(map.toString());
}
}
目前显示
3
{65;72=Dan, 68;78=Amn, 675;89=Ann}
但希望它只显示
65;72=Dan
感谢您寻找
答案 0 :(得分:3)
Map.get(K)
方法允许您检索所需键的值。所以你可以这样做:
Coords c = new Coords(65,72);
System.out.println(c + " -> " + map.get(c));
这适用于任何类型的Map,包括HashMap和TreeMap。您还可以使用Map.keySet()
在地图中获取一组所有键。
答案 1 :(得分:0)
只需从HashMap
派生并覆盖其toString
方法
答案 2 :(得分:0)
您想要调用哈希映射的特定行为。哈希映射的默认和通用行为是打印所有元素。如果您想要特定的行为,最好将它包装在您自己的类中并提供自定义的toString实现。另外,为什么不考虑在从地图中检索特定元素后打印它。
答案 3 :(得分:0)
我认为你必须拥有它,看起来更系统(关键将是独一无二的):
HashMap<String, Coords> map = new HashMap<String, Coords>();
map.put("Dan", new Coords(65, 72));
map.put("Amn", new Coords(68, 78));
map.put("Ann", new Coords(675, 89));
然后,对于特定值,您必须执行System.out.println(map.get("Dan").toString());
它将返回坐标
更新:根据您的代码,它将是:
System.out.println(new Coords(x, y) + "=" + map.get(new Coords(x, y)));
答案 4 :(得分:0)
Map有一个名为get()的方法,它可以接受一个键。对于给定的坐标,将调用equals和hashcode方法来查找匹配值。使用此方法。
PS:你的equals方法总是假设要比较的对象是Coords,可能不是这样。
答案 5 :(得分:-1)
我认为你可以使用map.get(key)方法来提取值。如果您需要除正式外观之外的花哨外观,请覆盖类中的toString()方法。