1

元の 2 つのリストを変更せずに、辞書順に並べられた 2 つの String ArrayList を新しい 3 つ目の ArrayList にマージするにはどうすればよいですか? たとえば、重複は許可されます。list1 が 1, 3, 5 であり、list2 が 2, 4, 7, 8, 8 の場合、新しくマージされた list3 は、1, 2, 3, 4, 5, 7, 8, 8 である必要があります。 2 つの while ループを作成します。最初のループはリスト全体を処理し続け、2 番目のループは他のリストから残りの要素を取得し、残りのすべての要素を新しいリストの最後に配置します3. 基本的に、両方のリスト インデックスを比較して、どちらの要素が進むかを確認する必要があります。すべてが正しいはずですが、while ループを作成するのに助けが必要です。

長い説明で申し訳ありませんが、助けてくれる人には賛成票を投じます! ありがとうございました!

public class Merge{
    public static boolean isStringArrayListSorted(ArrayList<String> data) {
        for (int i = 1; i < data.size(); i++) {
            if (data.get(i - 1).compareTo(data.get(i)) > 0) {
                return false;
            }
        }
        return true;
    }

    public Merge (ArrayList<String> list1, ArrayList<String> list2){

        ArrayList<String> list3 = new ArrayList<String>();

    list1.add(0, "a");
    list1.add(1, "c");
    list1.add(2, "e");
    list1.add(3, "g");

    list2.add(0, "b");
    list2.add(1, "d");
    list2.add(2, "f");
    list2.add(3, "h");
    list2.add(4, "i");
    list2.add(5, "j");

    while(list1!= null){
        if(list1.get(0)> list2.get(0))
        {
            list3.add(index, element);
        }
    }
}
4

3 に答える 3

2

2 つを結合して再度ソートするのではなく、本当にマージを実行したいとします。次のような単純なマージ コードを使用します。

public static ArrayList<String> merge(ArrayList<String> L1, ArrayList<String> L2) {
    int i1 = 0, i2 = 0;
    ArrayList<String> result = new ArrayList<String>();

    while (i1 < L1.size() && i2 < L2.size()) {
        if (L1.get(i1).compareTo(L2.get(i2)) < 0) {
            result.add(L1.get(i1));
            i1++;
        } else {
            result.add(L2.get(i2));
            i2++;
        }
    }

    while (i1 < L1.size()) {
        result.add(L1.get(i1));
        i1++;
    }

    while (i2 < L2.size()) {
        result.add(L2.get(i2));
        i2++;
    }

    return result;
}
于 2016-04-14T03:58:47.930 に答える
2

Collections.sort()を使用しないのはなぜですか?

ArrayList<String> list3 = new ArrayList<String>(list1);
list3.addAll(list2);
Collections.sort(list3);
于 2016-04-14T03:53:04.590 に答える
1

ここを使用することをお勧めしCollections.sort ()ます。新しいリストを作成し、すべての要素を追加して並べ替えるだけです。チデは短くなり、読みやすくなり、ソートアルゴリズムに組み込まれた高性能を使用することになります。

于 2016-04-14T03:56:56.403 に答える