我正在尝试访问在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());
答案 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 是任何类变量的名称。