-3

配列リストを、それぞれに 6 つの要素を持つ小さな個別のリストに分割したいと考えています。たとえば、ユーザーは次の情報を入力します。

HKY SGP 18:00 2 9:00 400

CHN HKY 17:00 3 6:00 500

RRK SSK 19:00 1 7:00 300

これらの情報は、arraylist に格納されます。次に、この配列リストを分離して、情報が次のようになるようにします。

リスト 1: HKY SGP 18:00 2 9:00 400

リスト 2: CHN HKY 17:00 3 6:00 500

リスト 3: RRK SSK 19:00 1 7:00 300

これは、このリストを別の arraylist と比較して、特定の情報を抽出するためです。

質問が明確でない場合は、私に知らせてください。

ありがとうございました!

4

2 に答える 2

1

nを使用して要素のグループで配列リストをトラバースし、subList()それらをリストのリストに追加できます。

List<List<String>> output = new ArrayList<List<String>>();
for (int i=0; i < arrayList.size(); i+=6) {
    List<String> group = arrayList.subList(i, i+6);
    output.add(new ArrayList<String>(group));
}

最後に、output6 要素リストのリストが含まれます。それは質問に答えますが、実際には、なぜすべてのデータをリストとして扱うのでしょうか? 6 つの値の各グループをクラスの属性としてカプセル化することは良い考えのようです。

于 2013-09-12T15:30:42.613 に答える
0

2 次元配列と String#split() の使用の組み合わせが必要だと思います。次の例では、探しているものにかなり近づくはずです。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class SplitString
{
    private static List<String> listOfFullStrings = new ArrayList<String>();

    static
    {
        listOfFullStrings.add("HKY SGP 18:00 2 9:00 400");
        listOfFullStrings.add("CHN HKY 17:00 3 6:00 500");
        listOfFullStrings.add("RRK SSK 19:00 1 7:00 300");
    }

    public static void main(String[] args)
    {
        String[][] parsedArrays = new String[listOfFullStrings.size()][6];

        for (int i = 0; i < listOfFullStrings.size(); i++)
        {
            parsedArrays[i] = listOfFullStrings.get(i).split(" ");
        }

        for (int i = 0; i < parsedArrays.length; i++)
        {
            System.out.println("List " + i + " :" + Arrays.asList(parsedArrays[i]));
        }
    }
}

出力は次のようになります。

List 0 :[HKY, SGP, 18:00, 2, 9:00, 400]
List 1 :[CHN, HKY, 17:00, 3, 6:00, 500]
List 2 :[RRK, SSK, 19:00, 1, 7:00, 300]

注: リストを印刷するときに書式設定を改善するためだけにリストに変換します。

于 2013-09-12T15:37:49.273 に答える