3

私は持っていmulti-dimensional array of stringます。希望に応じて要素を追加、削除、挿入できるように、コレクションタイプに変換したいと思っています。配列では、特定の位置にある要素を削除できません。

特定の位置でデータを削除でき、任意の位置でデータを追加できるようなコレクションが必要です。
また、多次元配列があることを忘れないでください。コレクションには多次元データも格納できるはずです。
どのコレクションが私の要件に適していますか?

4

3 に答える 3

5

ArrayListは必要なことを実行する必要があります。例えば:

List<List<String>> stringList = new ArrayList<List<String>>();  //A List to store a list of strings

また...

List<String[]> myNumberList = new ArrayList<List<String[]>();   //A List to store arrays of Strings.
于 2012-05-07T06:09:10.163 に答える
2

多次元配列がありますか?サンプルデータを探すので("yes","abbbc")1次元配列用です。しかし、例を挙げましょう。

    // This example for multi-dimensional array of string
    String[][] arrays = new String[][]{{"aa", "bb", "cc"}, {"dd", "ee", "ff"}};
    Map<Integer, List<String>> map = new HashMap<>();

    List<String> list;

    for(int i = 0; i < arrays.length; i++) {
        list = Arrays.asList(arrays[i]);

        map.put(i, list);
    }

    for(int i = 0; i < map.size(); i++) {
        for(int j = 0; j < map.get(i).size(); j++) {
            System.out.println(map.get(i).get(j));
        }
    }

    // This example for one-dimensional array of string
    String[] arr = new String[] {"aa", "bb"};
    List<String> listArr = Arrays.asList(arr);

    for(String str : listArr) {
        System.out.println(str);
    }

私が使用している多次元配列の場合、および私が使用HashMapしている1次元配列の場合ArrayList。それでもこれら2つの間がわからない場合は、これを読んでください。そして、私が間違っている場合は私を訂正してください

于 2012-05-07T06:49:28.620 に答える
0

他の問題と同様に、データ構造には複数のオプションがあり、それらのトレードオフ(時間、スペース)に基づいて設計を決定する必要があります。

すぐに頭に浮かぶ2つのデータ構造はとArrayListですLinkedList。で、の任意の位置からの要素を使用できLinkedListます。これを使用すると、線形時間O(n)になります。insertremoveO(1) constant timeArrayList

ただし、要素へのアクセスArrayListは一定時間です(インデックスを作成できます)。一方、通常はを使用して、LinkedListそれをトラバースする必要があります。LinkedListただし、この問題は各要素によって回避できるため、で特定のノードをhashing見つけることができます。もちろん、aとaを使用する方が、スペースの面でオーバーヘッドが大きくなりますが、より高速なソリューションです。linked listamortized constant timehashlinked listarray

これらのデータ構造の詳細については、配列リンクリストハッシュテーブル
Javaこれらのデータ構造の実装:ArrayListLinkedListハッシュテーブル

于 2012-05-07T06:24:37.740 に答える