好的,我想要做的是在TreeMap中调用单个对象的方法。我知道关键值并尝试使用.get()但是当我这样做时,虽然它返回了对象引用,但我无法用它做任何事情。
长话短说是否有办法从TreeMap中的对象调用方法,而不必遍历整个过程中的整个事物?我觉得我误解了一些非常简单的东西,但是我看得越多,我就越迷惑自己。我理解如何使用keySets等迭代并访问地图中的所有值,但是当涉及到这个特定的动作时,我的脑子会画一个空白。
如果它有所不同,那么关键是整数,而且值是我自己创造的一个类。我试图访问我在课堂上为特定键创建的getName()方法,但似乎无法弄明白。
由于
编辑:我将尝试发布以下代码,发布可能相关的任何内容(对不起,如果其中任何内容不是)
公共课堂战斗 {TreeMap<Integer, Enemy> enemies = new TreeMap<Integer, Enemy>();
TreeMap<Integer, Character> battleCharacters;
int enemiesAlive;
int totalXp;
public Battle(TreeMap characters, int floorNumber)
{
createEnemies(floorNumber);
battleCharacters = new TreeMap<Integer, Character>(characters);
enemiesAlive = 6;
totalXp = 0;
for (Map.Entry<Integer, Enemy> entry : enemies.entrySet())
{
totalXp = totalXp + entry.getValue().getExperienceValue();
}
}
[...]
public void battleLoop()
{
System.out.println("Battle!");
System.out.println("Your Party:");
System.out.println(battleCharacters.get(1).statusReport()); //this doesn't work
{
//will be changed
enemiesAlive--;
}
}
public void battleReport()
{
for (int key : enemies.keySet())
{
enemies.get(key).statusReport(); //this works
}
}
答案 0 :(得分:2)
我的猜测:您有一个TreeMap
作为原始类型而不是TreeMap<Integer, YourObjectType>
。因此,get
方法的返回类型为Object
,您无法在该类型上调用您的方法。
你得到的是你的对象,你可以向我们的课堂,但你应该更好地参数化你的TreeMap
。
答案 1 :(得分:0)
前提是您已正确创建地图......
TreeMap<Integer, MyObj> myMap = new TreeMap<>();
// ... add data to map
myMap.get(myKey).getName();