繁体   English   中英

如何从Java中的HashMap获取对象

[英]How to get an object from a HashMap in Java

在给出密钥时,我试图从HashMap获取Test对象的速度,但我不太清楚如何做到这一点。 我试过这种方式,但错了:

hash.values().getSpeed();

有帮助吗? 谢谢

class Test {

            private String id;
            private String name;
            private int speed;

            public Test(String id, String name, int speed) {
                this.id = id;
                this.name = name;
                this.speed = speed;

            }

            public String getId() {
                return id;
            }

            public String getName() {
                return name;

            }

            public int getSpeed() {
                return speed;
            }
        }    
    public class Driver {    
    public static void main(String[] args) {
        HashMap<String, Test> hash = new HashMap<String, Test>();

            Test c1;
            Test c2;

            c1 = new Test("Z", "B", 4);
            c2 = new Test("Y", "D", 7);
            hash.put("A", c1);
            hash.put("C", c2);
    }
}
Test c1;
Test c2;

c1 = new Test("Z", "B", 4);
c2 = new Test("Y", "D", 7);
hash.put("A", c1);
hash.put("C", c2);

Test getC1 = (Test)hash.get("A");
Test getC2 = (Test)hash.get("C");

values()方法返回HashMap对象中包含的的集合。 您可以使用for loop遍历值集合。

for(Test t:hash.values())
{
  System.out.println(t.getSpeed());
}

Map接口中有一个方法,我认为有以下签名+返回类型:

E get(T key);

hash.get("A") ,或者更一般地说: hash.get(key) ,其中keyhash.put(key, value)调用的第一个参数。

getput的倒数。 所以只是hash.get("C"); 会给你c1

我建议你在发布之前仔细查看你使用的类的Javadoc。

public class Driver {    
    public static void main(String[] args) {
        HashMap<String, Test> hash = new HashMap<String, Test>();
        Test c1;
        Test c2;
        c1 = new Test("A", "Maruthi", 4);
        c2 = new Test("B", "Toyota", 7);
        hash.put("A", c1);
        hash.put("B", c2);
        for(Test t:hash.values()) {
          System.out.println(t.getSpeed() + " " + t.getId() + " " + t.getName());
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM