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"),所以它是一维数组。但是让我举个例子:

    // 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。如果您仍然不了解这两者,请阅读本文。如果我错了,请纠正我

于 2012-05-07T06:49:28.620 回答
0

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

立即想到的两个数据结构是ArrayListLinkedList。有了一个LinkedList你可以insertremove一个来自任何位置的元素O(1) constant time。这ArrayList将是线性时间 O(n)。

但是,在 an 中访问元素ArrayList是恒定的时间(您可以对其进行索引)。而通常使用 aLinkedList您需要遍历它。LinkedList虽然每个元素都可以避免这个问题,所以你可以在 a in 中hashing找到一个特定的节点。当然,拥有 a和 a是比 a 更快的解决方案,尽管在空间方面有更多开销。linked listamortized constant timehashlinked listarray

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

于 2012-05-07T06:24:37.740 回答