0

この行は:

List params = (List) hashMap.get(key);

新しいリストを作成しますか、それとも単にリストに追加しますか?

コードの使用方法は次のとおりです。

ParameterCache cache = ParameterCache.getInstance();
        HashMap hashMap = cache.getAllParameters(ParameterCodeConstants.PARAMETER_DORF_REGION, false);
        ArrayList regionIdList=new ArrayList();
        Set keys = hashMap.keySet();
        Iterator it = keys.iterator();
        while (it.hasNext()) {
            BigDecimal key = (BigDecimal) it.next();
            List params = (List) hashMap.get(key);
            if (params != null && params.size() > 0) {
                ParameterDTO paramDTO = (ParameterDTO) params.get(0);

                String textValue = paramDTO.getParameterTextValue();
                if(textValue.equals(region_id)){
                    regionIdList.add(paramDTO.getRegion());
                }

            }

        }
4

3 に答える 3

4

次のような表現

(List) hashMap.get(key);

新しいリストは作成されません。マップに保存されているリスト参照のコピーが返されます。

(そして、への呼び出しが表示されaddないので、どのように何かが追加されるのかもわかりません。)

于 2012-06-08T12:04:36.367 に答える
1

この行は新しいリストを作成しますか、それとも単にリストに追加しますか

List params = (List) hashMap.get(key);

これはどれも-ここでは割り当てのみが行われています。このマップで関連付けられている値keyは、既存のListオブジェクト(またはnull)への参照であると想定されており、これは。によって返されgetます。次に、この参照はに割り当てられparamsます。

この宣言の前にローカル変数paramsが存在していなかったため、とにかく何かを追加するリストはありません。

于 2012-06-08T12:05:26.400 に答える
0

の行List params = (List) hashMap.get(key);で、params は hashmap.get(key) の戻り値になります。いいえ、追加は行われません。

于 2012-06-08T12:05:31.950 に答える