0

私は次の定義を持っていますが、これは問題ありません

private List<Map<String, String>> list = new ArrayList<Map<String, String>>();

しかし、最初の文字列もタイプリストになるように拡張する必要があります。次のコードで試し、新しいリストを追加し、listPrentsを保持するように最初の文字列を変更しましたが、エラーが発生しました。

private Map<String, String> listParents = new HashMap<String, String>();
private List<Map<listParents, String>> list = new ArrayList<Map<String, String>>();

どうすればそのようなことができますか、リストの種類を変更できます。

ありがとう、ヒョードル

4

3 に答える 3

2

List<Map<List<String>, String>> list = new ArrayList<Map<List<String>, String>>();

しかし、一般的には、リストをハッシュマップのキーとして使用することはお勧めしません。

于 2012-12-03T11:25:50.313 に答える
1

オブジェクトをクラスタイプとして使用することはできません(listParentsインスタンスを使用して、マップ内の文字列から文字列へのマップを定義しようとします。構造を作成cできる世界から来たと思いますtypedefが、この場合は、いずれかの答えに従う必要がありますJavatypedefをサポートしていないため、正しい定義で投稿されました

于 2012-12-03T11:27:40.543 に答える
1

ジェネリックスは実際には構文上の提案者にすぎないため、あなたがやろうとしていることは不可能であり、Javaでは意味がありません。コンパイル時には、これらのコレクションの型チェックは行われません。ジェネリックは、ジェネリックの特定のタイプに対応するクラスのみを使用するように強制します。次のいずれかを実行できます。

private List<Map<List<?>, String>> list = new ArrayList<Map<String, String>>();

そしてあなたは指定することができますか?さらに、extendsキーワードとsuperキーワードを使用して、構造に適合するクラスを定義します。

またはより簡単な解決策:

private List<Map<List<Object>, String>> list = new ArrayList<Map<String, String>>();
于 2012-12-03T11:31:12.610 に答える