0

クラスTestは、2つのフィールドStringFloatタイプを持つ別のクラスです。このクラスをリストコレクションで使用しており、最終的に値としてに入力されますHashMap

しかし、マップにキーとリストオブジェクト(値)をマップに入力しようとすると、有効な構文ではないため、Javaはそれを受け入れないようです。

ArrayList <Test> list = new ArrayList <Test> ();

Map<Integer, ArrayList <Test>> mp = new HashMap<Integer, ArrayList <Test>>();  

list.add(new Telephone ( 0.9 , "A"));
list.add(new Telephone(5.1 , "A"));

mp.put(0,list.get(0)); // this Does Not work :(, it should work

出力:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
The method put(Integer, ArrayList<Telephone>) in the type  
   Map<Integer,ArrayList<Telephone>> is not applicable for the arguments 
   (int,   Telephone) at Main.main(Main.java:64)
4

3 に答える 3

2

マップはキーとして整数を受け入れ、値としてTestのArrayListを受け入れますが、TestオブジェクトのarrayListの代わりに、Telephoneオブジェクトを配置しようとしています。あなたのIDEはそれを明確に述べています。

Map<Integer,ArrayList<Telephone>> is not applicable for the arguments 
   (int,   Telephone) at Main.main(Main.java:64)
于 2013-01-26T18:25:58.303 に答える
2

上記のコメントと質問であなたが言ったあなたの要件によれば、 Map 宣言には次の構文が必要だと思います:

Map<Integer,Test> mp = new HashMap<Integer,Test>();

編集

OKここに編集があります:

ArrayList<Test> list = new ArrayList<Test>();
Map<Integer,ArrayList<Test>> mp = new HashMap<Integer,ArrayList<Test>>();
list.add(new Test(0.1,"A"));
list.add(new Test(0.2,"B"));
mp.put(1,list);

また、キー 1 にさらに多くの Test オブジェクトを配置する場合は、次のようにします。

List<Test> value = mp.get(1);
value.add(0.3,"c");
value.add(0.5,"E");

mp.put(1,value);
于 2013-01-26T18:48:01.823 に答える
1

List単純なオブジェクトを配置しようとしている間、マップはオブジェクトのみを値として受け入れることができTelephoneます。

于 2013-01-26T18:23:28.397 に答える