私は、基本的に2つの静的メソッドを保持するZipClassというクラスを持っています: - リストに同じサイズの2つのリストを入れるZipToListリストの; - ZipToMapList()は、値のリストをキーとして、リストのリストを値としてキーに格納します。マップ内のJavaネストされたリストは、リストのリストをマップ値に渡すときにエラーを返します
第1の方法は正常に動作します:
public static <T> List<List<T>> zipToList(List<T> list1,List<T> list2)
{
List<T> tuple = new ArrayList<>(); //a list for pair of values from from same columns (fields)
List<List<T>> tuples = new ArrayList<>(); // a list of lists
if(list1.size() == list2.size()) //check that size of lists the same
{
for(int idx = 0; idx < list1.size(); idx ++)
{
//feed tuple with the pair of values
tuple.add(list1.get(idx));
tuple.add(list2.get(idx));
//feed list of lists with the list of paired values
tuples.add(copyList(tuple));
//clear pair for the next iteration
tuple.clear();
}
} else System.out.println("Lists must be of same size");
return tuples;
}
私の第二の方法:
public static <K,V extends List<?>> Map<K,List<?>> zipToMapList(List<K> keys,List<List<?>> values)
{
Map<K,List<?>> dataMap = new HashMap<>();
for(int idx = 0; idx < keys.size(); idx ++)
{
dataMap.put(keys.get(idx), values.get(idx));
}
return dataMap;
}
私は整数値を保持する二つのリストました:values1とvalues2 をし、私が保持しているキーのリストをしました文字列値:キー dataMapの内容を印刷しようとしたとき: System.out.println(zipToMapList(keys、zipToList(values1、values2))); エラーメッセージがあります:
The method zipToMapList(List<K>, List<List<?>>) in the type ZipClass is not applicable for the arguments (List<String>, List<List<Integer>>)
zipToList()メソッドはうまく動作しますが、私は正確に私の第二の方法では何が起こっているのか理解できない、私はそれはとは何かだと思う:
<K,V extends List<?>>
"K"はキーの一般的な参照型です。 VはListを拡張し、任意のタイプのListを保持することを前提とし、innerはListの任意のタイプに関係する。 グーグルでは、これはおそらく違法な方法だとわかっていますが、理由を理解できません。 誰でも理由を説明できますか?この問題を克服する方法は何ですか?
多くの感謝!
あなたはどこにでもzipToMapList' 'で' V'を使用していませんそれでなぜあなたはそれを必要としているのですか? – Eran