如何访问HashMap内对象中的值

时间:2016-03-14 13:19:38

标签: java hashmap

我正在尝试访问在HashMap中列出的Class中保存的值。

在我的第一堂课中,我创建了一个链接到“LiftingStats”类的HashMap。

Map<String, LiftingStats> fitnessGoals = new HashMap<String, LiftingStats>();

在LiftingStats课程中,我执行以下操作...

public class LiftingStats
{
   public String activity;
   public String weightType;
   public int weight;
   public double difficulty;

   /**
    * Constructor for objects of class LiftingStats
    */
   public LiftingStats()
   {
      this.run();
   }

   /**
    * test method to fill values
    */
   public void run(){
      //code
      this.activity = "bench press";
      this.weightType = "Kg";
      this.weight = 100;
      this.difficulty = 8.5;
   }

我正在运行一个测试方法来用一些值填充hashmap

   public void testMethod(){
      fitness.put("activityone", new LiftingStats());
      fitness.put("activitytwo", new LiftingStats());

4 个答案:

答案 0 :(得分:2)

有很多方法可以访问它们。

用于检索特定<wddxPacket version="1.0"> <header/> <data> <array length="1"> <struct type="mydata"> <var name="serverscheduletask#$%^DEFAULT#$%^SA-QW_71"> <struct type="schedule-data"> <var name="task"> <string>SA-QW_71</string> </var> </struct> </var> <var name="serverscheduletask#$%^DEFAULT#$%^ST_FRED"> <struct type="schedule-data"> <var name="task"> <string>ST_FRED</string> </var> </struct> </var> <var name="serverscheduletask#$%^DEFAULT#$%^SA-QW_16"> <struct type="schedule-data"> <var name="task"> <string>SA-QW_16</string> </var> </struct> </var> <var name="serverscheduletask#$%^DEFAULT#$%^ST_TEST"> <struct type="schedule-data"> <var name="task"> <string>ST_TEST</string> </var> </struct> </var> <var name="serverscheduletask#$%^DEFAULT#$%^SA-QW_71"> <struct type="coldfusion.scheduling.ScheduleTagData"> <var name="task"> <string>SA-QW_71</string> </var> </struct> </var> </struct> </array> </data> </wddxPacket> 条目的值

key

用于检索值而无需关心键

LiftingStats valueForOne = fitness.get("activityone");

用于检索键和值对

Collection<LiftingStats> values = fitness.values();

或某些变体。

答案 1 :(得分:1)

地图是由Key, Value对组成的数据结构。在这种情况下,您有两个引用两个LiftingStats对象实例的键。要访问这些对象,只需使用特定的密钥来检索对象。例如:

LiftingStats current = fitness.get("activityone");

通过引用current,您可以对该特定LiftingStats对象执行操作。

类似地,你可以像这样一起“菊花链式”函数调用,并且仍然在Map中改变对象。例如:

fitness.get("activityone").someMethod();

答案 2 :(得分:1)

您可以根据您的问题调整此答案: How to efficiently iterate over each Entry in a Map?

Map<String, LiftingStats> fitnessGoals = new HashMap<String, LiftingStats>();
for (Map.Entry<String, LiftingStats> entry : fitnessGoals.entrySet())
{
    //What you need to do with your map
}

答案 3 :(得分:0)

访问 HashMap 中对象变量的另一种方法是将 Hashmap 的 getValue() 方法获取的数据类型转换为用户定义的类。

您可以使用以下代码:

Map<String, LiftingStats> lstats= new HashMap<String, LiftingStats>();
for (Map.Entry ls:lstats.entrySet()) {
    System.out.println(ls.getKey()+" "+((LiftingStats)ls.getValue()).activity);
}

类中存在的任何变量都可以通过使用 ((LiftingStats)ls.getValue()).Var_name 来访问。其中 Var_name 是任何类变量的名称。