0

我有一个 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

谢谢你看

4

6 回答 6

3

Map.get(K)方法允许您检索所需键的值。所以你可以这样做:

Coords c = new Coords(65,72);
System.out.println(c + " -> " + map.get(c));

这适用于任何类型的 Map,包括 HashMap 和 TreeMap。您还可以使用 获取地图中所有键的集合Map.keySet()

于 2012-08-05T16:42:23.690 回答
0

只需派生HashMap并覆盖其toString方法

于 2012-08-05T16:42:09.263 回答
0

您想要调用哈希映射的特定行为。哈希映射的默认和通用行为是打印所有元素。如果您想要特定行为,最好将其包装在您自己的类中并提供自定义 toString 实现。此外,您为什么不考虑在从地图中检索特定元素后将其打印下来。

于 2012-08-05T16:42:43.530 回答
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)));

于 2012-08-05T16:46:57.977 回答
0

Map 有一个名为 get() 的方法,它可以接受一个键。对于给定的坐标,将调用 equals 和 hashcode 方法来查找匹配值。使用此方法。

PS:您的 equals 方法始终假定要与之比较的对象是 Coords,但情况可能并非如此。

于 2012-08-05T16:50:26.017 回答
-1

我认为在这里您可以只使用 map.get(key) 方法来提取值。如果您需要正式外观以外的精美外观,请覆盖类中的 toString() 方法。

于 2016-01-16T14:40:45.477 回答