从Hashmap打印特定记录

时间:2012-08-05 16:38:11

标签: java hashmap tostring println

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

感谢您寻找

6 个答案:

答案 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()方法。