3

我必须为 sql 插入编写脚本。我拥有编写插入内容所需的所有信息,但我正在使用三种不同的信息,而不仅仅是两条。我知道我必须将地图放在地图中,但是当我尝试将任何内容放入地图时出现编译错误。

HashMap<String,String> acctyp = new HashMap<String,String>();
HashMap<String, HashMap<String,String>> gens = new HashMap<String,HashMap<String,String>>();
gens.put("'GEN01'", acctyp.put("'Open'","ACCTYP 01"));
gens.put("'GEN02'", acctyp.put("'Sheltered'","ACCTYP 02"));
gens.put("'GEN03'", acctyp.put("'Spousal sheltered'","ACCTYP 03"));
gens.put("'GEN06'", acctyp.put("'Education'","ACCTYP 06"));
gens.put("'GEN12'", acctyp.put("'Non-ded. sheltered'","ACCTYP 12"));
gens.put("'GEN30'", acctyp.put("'Structured Product'","ACCTYP 30"));
gens.put("'GEN31'", acctyp.put("'Emergency Cash'","ACCTYP 31"));
gens.put("'GEN85'", acctyp.put("'Insurance Savings'","ACCTYP 85"));
gens.put("'GEN86'", acctyp.put("'Stock Option'","ACCTYP 86"));
gens.put("'GEN94'", acctyp.put("'Business Other'","ACCTYP 94"));
gens.put("'GEN95'", acctyp.put("'Personal use'","ACCTYP 95"));
gens.put("'GEN97'", acctyp.put("'Universal Life'","ACCTYP 97"));

如果有人对为什么我在 put 上遇到编译错误有任何见解,那么将不胜感激。

4

6 回答 6

19

Map.put返回一个字符串。gens 映射StringHashMap. 您正在打电话gens.put(string, string),而应该打电话gens.put(string, HashMap<string,string>)

您的代码应为:

HashMap<String,String> acctyp = new HashMap<String,String>();
HashMap<String, HashMap<String,String>> gens = new HashMap<String,HashMap<String,String>>();
acctyp.put("'Open'","ACCTYP 01");
gens.put("'GEN01'", acctyp);
于 2013-07-23T12:56:08.133 回答
3

你的代码应该是这样的

        HashMap<String, HashMap<String,String>> gens = new HashMap<String,HashMap<String,String>>();
        HashMap<String,String> acctyp =  new HashMap<String,String>();
        acctyp.put("'Open'","ACCTYP 01");
        gens.put("'GEN01'", acctyp);
        acctyp =  new HashMap<String,String>();
        acctyp.put("'Sheltered'","ACCTYP 02");
        gens.put("'GEN02'", acctyp);
        acctyp =  new HashMap<String,String>();
        acctyp.put("'Spousal sheltered'","ACCTYP 03");
        gens.put("'GEN03'",acctyp );
        acctyp =  new HashMap<String,String>();
        acctyp.put("'Education'","ACCTYP 06");
        gens.put("'GEN06'",acctyp );            
        acctyp =  new HashMap<String,String>();
        acctyp.put("'Non-ded. sheltered'","ACCTYP 12");
        gens.put("'GEN06'",acctyp );
        acctyp =  new HashMap<String,String>();
        acctyp.put("'Structured Product'","ACCTYP 30");
        gens.put("'GEN06'",acctyp );

        acctyp =  new HashMap<String,String>();
        acctyp.put("'Emergency Cash'","ACCTYP 31");
        gens.put("'GEN06'",acctyp );
于 2013-07-23T13:07:20.343 回答
2

因为Map#put()返回一个字符串值。当你这样做时 : acctyp.put("'Open'","ACCTYP 01"),它实际上返回一个String因此gens.put("'GEN01'", acctyp.put("'Open'","ACCTYP 01"));是一个编译错误。

我想你想要的是:

HashMap<String,String> acctyp = new HashMap<String,String>();
HashMap<String, HashMap<String,String>> gens = new 
HashMap<String,HashMap<String,String>>();
acctyp.put("'Open'","ACCTYP 01");
acctyp.put("'Sheltered'","ACCTYP 02");
acctyp.put("'Spousal sheltered'","ACCTYP 03");
gens.put("'GEN01'", acctype);
于 2013-07-23T12:55:19.753 回答
2

如果您想稍后填充第二个哈希图,您也可以编写此代码:

acctype.put("'Open'",new Hashmap<String,String>()); 
acctype.put("''Sheltered'",new Hashmap<String,String>());
... So on
actttype.get("'Open'").put("'Sheltered'","ACCTYP 02")
acttype.get("'Sheltered'").put("'Spousal sheltered'","ACCTYP 03")
and so on ...

希望这也有帮助

于 2016-12-07T17:56:29.010 回答
0

static Map<String, Map<String, Integer >> divisons = new HashMap<String, Map<String, Integer >> ();

public static void main(String[] args) {
    Map < String, Integer > studentMarksA = new HashMap < String, Integer > ();
    Map < String, Integer > studentMarksB = new HashMap < String, Integer > ();
    Map < String, Integer > studentMarksC = new HashMap < String, Integer > ();
    // Entering for marks for divison A
    divisons.put("9A", studentMarksA);
    studentMarksA.put("Agniv", 60);
    studentMarksA.put("Bhuvan", 70);
    studentMarksA.put("Chandan", 80);
    // Entering for marks for divison B
    divisons.put("9B", studentMarksB);
    studentMarksB.put("Dev", 50);
    studentMarksB.put("Ejazd", 90);
    studentMarksB.put("Faruk", 61);
    // Entering for marks for divison C
    divisons.put("9C", studentMarksC);
    studentMarksC.put("Govind", 68);
    studentMarksC.put("Harish", 71);
    studentMarksC.put("Ishwar", 84);

    getRecord("B");
}
于 2021-02-05T18:47:18.253 回答
-1
 - I think u should do like this way..

   HashMap<String,String> acctyp = new HashMap<String,String>();
   HashMap<String, HashMap<String,String>> gens = new
   HashMap<String,HashMap<String,String>>();

    acctyp.put("'Open'","ACCTYP 01");
           gens.put("'GEN01'", acctyp);
           acctyp.put("'Sheltered'","ACCTYP 02");
           gens.put("'GEN02'", acctyp);
           acctyp.put("'Spousal sheltered'","ACCTYP 03");
           gens.put("'GEN03'",acctyp );
于 2017-06-15T05:49:37.070 回答