我有一个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")
,所以它是一维数组。但是让我举个例子:
// 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
的一维数组ArrayList
。如果您仍然不了解这两者,请阅读本文。如果我错了,请纠正我
与任何问题一样,您有多种数据结构选择,您必须根据它们的权衡(时间、空间)做出设计决策。
立即想到的两个数据结构是ArrayList
和LinkedList
。有了一个LinkedList
你可以insert
和remove
一个来自任何位置的元素O(1) constant time
。这ArrayList
将是线性时间 O(n)。
但是,在 an 中访问元素ArrayList
是恒定的时间(您可以对其进行索引)。而通常使用 aLinkedList
您需要遍历它。LinkedList
虽然每个元素都可以避免这个问题,所以你可以在 a in 中hashing
找到一个特定的节点。当然,拥有 a和 a是比 a 更快的解决方案,尽管在空间方面有更多开销。linked list
amortized constant time
hash
linked list
array
有关这些数据结构的更多信息:Arrays、Linked Lists、Hash Tables
Java
这些数据结构的实现:ArrayList、LinkedList、Hash table