0

別のクラスの HashMap の keySet 内の各キーを調べたい。今、これは私が持っているものです:

管理者.java

import java.util.HashMap

public class Admin {
public static HashMap<String, Person> person = new HashMap<String, Person>();

    public static void main (String [] args) {
         for (String key: person.get("James").getHashMap().keySet()) {
         System.out.println(key);
    }

}

Person.java

import java.util.HashMap

public class Person {
public static HashMap<String, Book> book = new HashMap<String, Book>();
private static String title = "";


    public Book (String titleIn) {
         title = titleIn;
    }

    public HashMap getHashMap(){
         return book;
    }


}

同じクラスに格納されていない HashMap で HashMap コマンドを使用できないため、これを行うことはできないと思います。

私が使用できる別の方法はありますか?Admin.java から間違って呼び出していますか?

ありがとう!

4

2 に答える 2

0

static で public であるため、プロジェクトのどこからでも使用できます。書くだけ

Admin.person

例えば

public class Person {

...
....
        public void print() {
         for (String key: Admin.person.get("James").getHashMap().keySet()) {
                 System.out.println(key);
            }

        }
   }
于 2015-10-30T12:11:00.763 に答える
0

あなたのgetHashMapメソッドは、HashMapあなたのPersonクラスで raw を返します。

生のマップはパラメーター化されていないため、キーの型はObject暗黙的です。

次のように変更する必要があります。

public Map<String, Book> getHashMap(){
   return book;
}

... キーを として参照できるようにするためString

編集

bookまた、変数を ( ではなく) インスタンスに変更するかstaticgetHashMapメソッドを静的にする必要があります。

Person後者は、すべてのインスタンスに対して同じオブジェクトを返すため、おそらく推奨されません。

于 2015-10-30T12:14:18.117 に答える