私は持っていmulti-dimensional array of string
ます。希望に応じて要素を追加、削除、挿入できるように、コレクションタイプに変換したいと思っています。配列では、特定の位置にある要素を削除できません。
特定の位置でデータを削除でき、任意の位置でデータを追加できるようなコレクションが必要です。
また、多次元配列があることを忘れないでください。コレクションには多次元データも格納できるはずです。
どのコレクションが私の要件に適していますか?
私は持っていmulti-dimensional array of string
ます。希望に応じて要素を追加、削除、挿入できるように、コレクションタイプに変換したいと思っています。配列では、特定の位置にある要素を削除できません。
特定の位置でデータを削除でき、任意の位置でデータを追加できるようなコレクションが必要です。
また、多次元配列があることを忘れないでください。コレクションには多次元データも格納できるはずです。
どのコレクションが私の要件に適していますか?
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.
多次元配列がありますか?サンプルデータを探すので("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つの間がわからない場合は、これを読んでください。そして、私が間違っている場合は私を訂正してください
他の問題と同様に、データ構造には複数のオプションがあり、それらのトレードオフ(時間、スペース)に基づいて設計を決定する必要があります。
すぐに頭に浮かぶ2つのデータ構造はとArrayList
ですLinkedList
。で、の任意の位置からの要素を使用できLinkedList
ます。これを使用すると、線形時間O(n)になります。insert
remove
O(1) constant time
ArrayList
ただし、要素へのアクセスArrayList
は一定時間です(インデックスを作成できます)。一方、通常はを使用して、LinkedList
それをトラバースする必要があります。LinkedList
ただし、この問題は各要素によって回避できるため、で特定のノードをhashing
見つけることができます。もちろん、aとaを使用する方が、スペースの面でオーバーヘッドが大きくなりますが、より高速なソリューションです。linked list
amortized constant time
hash
linked list
array
これらのデータ構造の詳細については、配列、リンクリスト、ハッシュテーブル
Java
これらのデータ構造の実装:ArrayList、LinkedList、ハッシュテーブル