我有multi-dimensional array of string
。我愿意将它转换为某种集合类型,以便我可以根据自己的意愿添加,删除和插入元素。在数组中,我无法删除特定位置的元素。
我需要这样的集合,我可以在特定位置删除数据,也可以在任何位置添加数据。
也不要忘记我有多维数组,所以集合也应该能够存储多维数据
哪个系列适合我的要求?
答案 0 :(得分: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.
答案 1 :(得分:2)
您确定拥有多维数组吗?因为我查找了您的示例数据("yes","abbbc")
,所以它适用于 One-Dimensional 数组。但是,让我举个例子:
// 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);
}
对于 Multi-Dimensional 数组,我使用的是HashMap
,而对于 One-Dimensional 数组,我正在使用ArrayList
。如果您仍然不理解这两者,请阅读this。请纠正我,如果我错了
答案 2 :(得分:0)
与任何问题一样,您有多种数据结构选项,您必须根据它们的权衡(时间,空间)做出设计决策。
立即想到的两个数据结构是ArrayList
和LinkedList
。使用LinkedList
,您可insert
和remove
O(1) constant time
中任意位置的元素。使用ArrayList
,这将是线性时间O(n)。
但是,访问ArrayList
中的元素是常量时间(您可以将其编入索引)。然而,通常使用LinkedList
,您需要遍历它。尽管LinkedList
每个元素都可以避免hashing
中的此问题,因此您可以在linked list
amortized constant time
中找到特定节点。当然,拥有hash
和linked list
是比array
更快的解决方案,尽管在空间方面会有更多的开销。
有关这些数据结构的更多信息:Arrays,Linked Lists,Hash Tables
这些数据结构的Java
实现:ArrayList,LinkedList,Hash table