哪个集合更适合存储来自多维数组的数据?

时间:2012-05-07 06:06:09

标签: java collections multidimensional-array

我有multi-dimensional array of string。我愿意将它转换为某种集合类型,以便我可以根据自己的意愿添加,删除和插入元素。在数组中,我无法删除特定位置的元素。

我需要这样的集合,我可以在特定位置删除数据,也可以在任何位置添加数据。
也不要忘记我有多维数组,所以集合也应该能够存储多维数据 哪个系列适合我的要求?

3 个答案:

答案 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)

与任何问题一样,您有多种数据结构选项,您必须根据它们的权衡(时间,空间)做出设计决策。

立即想到的两个数据结构是ArrayListLinkedList。使用LinkedList,您可insertremove O(1) constant time中任意位置的元素。使用ArrayList,这将是线性时间O(n)。

但是,访问ArrayList中的元素是常量时间(您可以将其编入索引)。然而,通常使用LinkedList,您需要遍历它。尽管LinkedList每个元素都可以避免hashing中的此问题,因此您可以在linked list amortized constant time中找到特定节点。当然,拥有hashlinked list是比array更快的解决方案,尽管在空间方面会有更多的开销。

有关这些数据结构的更多信息:ArraysLinked ListsHash Tables
这些数据结构的Java实现:ArrayListLinkedListHash table