3

私はこの方法を持っています

public List<List<Stat>> ConvertReportCases (ArrayList<ArrayList<Stat>> stats)

戻り値の型が a であるインターフェイスの実装List<List<Stat>>です。一般に、Java でネストされた ArrayList から List に変換するにはどうすればよいですか?

ありがとう

編集 提案をありがとう、パラメーターをリストとして渡すことができますが、呼び出し元がそれをリストとして渡す必要があるため、間違っている可能性があります。

4

3 に答える 3

4

実際、変換は必要ありません。

リストの宣言に触れられない場合は、メソッドのシグネチャをこれに変更する必要があります。ワイルドカードを使用します。

public List<? extends List<Stat>> convertReportCases(List<? extends List<Stat>> stats);

ただし、最もクリーンな方法は、メソッド シグネチャを次のように変更することです。

public List<List<Stat>> convertReportCases(List<List<Stat>> stats);

そして、リストを次のように宣言します

List<List<Stat>> list = new ArrayList<List<Stat>>();
for (List<Stat> sublist : list) {
    sublist = new ArrayList<Stat>();
}

メソッドを使用する場合Listは問題ありません。変換は必要ありません。ArrayListis-a andListは実際にはそのListメソッドにしか役に立たないので、大丈夫です!

于 2012-06-06T08:32:03.953 に答える
0
public List<List<Stat>> ConvertReportCases (ArrayList<ArrayList<Stat>> stats) {
   List<List<Stat>> newList = new ArrayList<List<Stat>>(stats.size());
   for (ArrayList<Stat> arrayList : stats) {
      newList.add(arrayList);
   }
   return newList;
}
于 2012-06-06T08:07:16.663 に答える
0

最初のリストを繰り返し処理し、各リストを変換する必要があります。何かのようなもの:

public List<List<Stat>> ConvertReportCases (ArrayList<ArrayList<Stat>> stats) {
    List<List<Stat>> list = new ArrayList<List<Stat>>();
    for (List<Stat> l : stats) {
        list.add(l);
    }
    return list;
}

この問題は、一般的な共分散が原因で発生します。詳細については、こちらをご覧ください

于 2012-06-06T08:07:21.060 に答える