2012-05-07 38 views
3

我有一個multi-dimensional array of string。我願意將它轉換爲某種集合類型,以便我可以根據需要添加,刪除和插入元素。在數組中,我不能刪除特定位置的元素。哪個集合更適合存儲來自多維數組的數據?

我需要這樣的集合,我可以刪除特定位置的數據,也可以在任何位置添加數據。
另外不要忘記我有多維數組,所以集合也應該能夠存儲多維數據。
哪個系列適合我的需求?

+1

提供樣本數據 –

+0

我的數據是'字符串'格式,即。 '(「是」,「abbbc」)' –

+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. 
+0

我能夠通過使用position來從arraylist中訪問數據嗎? –

+0

@Sachin Mhetre:'列表'按位置可訪問'集合'。[查看List的API](http://docs.oracle.com/javase/6/docs/api/java/util/List.html) –

+0

@SachinMhetre:是的,你可以......我提供了你有一個鏈接他Javadoc ...你至少可以做的就是自己檢查出來...... – npinti

0

對於任何問題,你有數據結構的多種選擇,你必須根據他們的權衡設計決策(時間, 空間)。

立即想到兩個數據結構是ArrayListLinkedList。用LinkedList您可以insertremove來自O(1) constant time中任何位置的元素。用ArrayList這將是線性時間O(n)。

但是,訪問ArrayList中的元素是恆定時間(您可以對其進行索引)。而通常使用LinkedList則需要遍歷它。雖然LinkedList中的這個問題雖然可以通過hashing中的每個元素來避免,所以您可以在amortized constant timelinked list中找到特定節點。當然,擁有hashlinked list是一個比array更快的解決方案,儘管空間有更多的開銷。

欲瞭解更多有關這些數據結構:ArraysLinked Lists,這些數據結構的Hash Tables
Java實現:ArrayListLinkedListHash table

+0

我正在尋找鏈接列表,但鏈接列表支持存儲多維數組數據? –

+0

'鏈接列表'是一個數據結構,可以容納任何類型的數據。 –

+0

你能更清楚你的'多維'是什麼意思嗎?多少維度?你希望執行哪種數據操作? –

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。如果你仍然不明白這兩者之間的關係,請閱讀this。並請糾正我,如果我錯了