如何使用其他类或函数的HashMap?

时间:2015-06-19 18:02:13

标签: java class hashmap

这是一个有效的代码示例。感谢@markspace为我提供它。 这里的代码生成一个hashmap并在其中插入值。

 public class RpgPersonExample
{
   public static void main( String[] args )
   {
      Map<String, RpgPerson> team = new HashMap<>();
      team.put( "Sgt. Mayhem", new RpgPerson( 100, 10, 0 ) );
      team.put( "Wizard", new RpgPerson( 100, 1, 10 ) );
      team.put( "Dragon", new RpgPerson( 1000, 100, 100 ) );

      System.out.println( team.get( "Dragon" ) );
      System.out.println( team.get( "Wizard" ) );
   }

}

class RpgPerson
{

   private int hits;
   private int strength;
   private int magic;

   public RpgPerson( int hits, int strength, int magic )
   {
      this.hits = hits;
      this.strength = strength;
      this.magic = magic;
   }

   @Override
   public String toString()
   {
      return "RpgPerson{" + "hits=" + hits + ", strength=" +
              strength + ", magic=" + magic + '}';
   }

}

我想要做的是从另一个班级使用它。如果我使用

       System.out.println( team.get( "Dragon" ) );
从主函数

它工作正常。但是我该怎么办?我想从另一个班级做到这一点?

Public class Test {
     public static void example(){
         System.out.println( RpgPerson.team.get( "Dragon" ) );
     }
}

类测试显然不起作用,但如果我希望它能够工作,我该怎么办?

4 个答案:

答案 0 :(得分:1)

您可以做的最简单的事情是将示例方法传递给引用Map的参数:

 public static void example(Map<String, RpgPerson> team) {
     System.out.println(team.get("Dragon"));
 }

答案 1 :(得分:0)

将名为team的Map声明为静态类变量:

public class RpgPersonExample
{
   public static Map<String, RpgPerson> team = new HashMap<>();
   public static void main( String[] args )
   {
     // ...
   }
}

像这样访问它:

 System.out.println( RpgPersonExample.team.get( "Dragon" ) );

答案 2 :(得分:0)

你需要一个新班级。你可以看起来像这样:

public class Team {
    private Map<String, RpgPerson> team;

    public Team() {
          team = new HashMap<String, RpgPerson>();
    }

    public void addPersonToTeam(String name, RpgPerson person) {
          team.put(name, person);
    }

    public Map<String, RpgPerson> getTeam() {
          return team;
    }
}

然后你可以建立一个新的团队,并在你需要的任何课程中使用它。

答案 3 :(得分:0)

如果我的问题正确,您希望在程序的其他位置使用哈希地图。这很简单,可以通过将hashmap声明为public并使其成为类变量来实现。现在,由于它的public和.a类变量,它可以在类的任何函数中使用,或者在该类的引用的帮助下使用。

但是如果你想在同一个类的void main中使用它,你必须将它声明为PUBLIC STATIC,因为静态函数只能访问静态变量。 如果你声明它是静态的,你可以在外面的任何地方使用它,只需说CLASSNAME.team.get(“whatever”); 希望这有帮助!!