2012-03-09 89 views
1

我想存儲的ArrayList另一個列表裏面,一些這樣的事我知道它錯了,但很喜歡這個....Java集合框架

List list=new ArrayList(); 
list.add(new("element1","element2","element3",element4=?); 
list.add(new("element5","element6","element7",element8=?); 

現在如果你看到上面的代碼其確定和精添加元素或第一行以列出第三個元素,但第四個元素是另一個數組[字符串數組]如何添加或追加到元素的第一行。 與第二行相同。

注意: - element4和element8的長度也不相同,因此element4有2個字符串,而element8有10個字符串。

當我顯示列表它應該顯示列表這樣

The first row of list is 
    element1 element2 element3 element4.1 element4.2 
    the second row of list is 
    element5 element6 element7 element8.1 element8.2 element8.3 element8.4 element8.5 element8.6 element8.7 element8.9 element8.10 

回答

0

你試過以下方式:

List list = new ArrayList(); 
    list.add(Arrays.asList("element1", "element2", "element3", 
      Arrays.asList("element4.1", "element4.2"))); 
    list.add(Arrays.asList("element5", "element6", "element7", 
      Arrays.asList("element8.1", "element8.2", "element8.3"))); 

    // print values 
    System.out.println(list.get(0)); 
    System.out.println(list.get(1)); 
0

你可以做一些像這樣添加列表到其它列表:List<List<String>> myList = new ArrayList<List<String>>();...。然而,眼看要添加具有不同類型的項目,我會建議你做以下(假設你總是有3名數組列表和1個陣列):

  • 創建一個新的類,它發生在4個參數,這是3個數組列表和1個數組。

  • 您的課程是否覆蓋了自己的toString()方法,以便它將迭代元素並以任何您喜歡的方式打印其內容。

  • 使用類似的方法創建一個使用類似的列表:List<MyClass> myList = new ArrayList<MyClass>();...。在這種情況下,MyClass是我在第1點中描述的類。這將允許您創建一個不需要執行任何投射的類型安全結構,從而使您的代碼看起來更清晰並且運行速度可能稍快。

看到你說的元素可以包含不同長度的字符串列表,你可以做這樣的事情:

public class MyClass 
{ 
    private List<String> arrayList1;... 
    private String[] myArray;... 

    public MyClass(List<String> list1, ..., String[] myArray) 
    { 
     this.arrayList1 = list1; 
     this.myArray = myArray; 
     ... 
    } 

    ... 
    @Override 
    public String toString() 
    { 
     StringBuilder sb = new StringBuilder(); 
     //iterate adding your list contents to your string builder. 
     return sb.toString(); 
    } 
} 

將您的內容,然後將是這樣的:

... 
List<String> arrayList1 = ...; 
arrayList1.add("...");... 
String[] myArray = ...; 

MyClass myClass = new MyClass(arrayList1, ..., myArray); 
System.out.println(myClass.toString()); 
1

所以根據我對你的問題的理解,你需要一個List<List<String>>。做到這一點,如下所示:

List<String> strs1 = new ArrayList<String>(); 
    strs1.add("element1"); 
    strs1.add("element2"); 

    List<String> strs2 = new ArrayList<String>(); 
    strs2.add("element3"); 

然後

List<List<String>> listOfList = new ArrayList<List<String>>(); 
    listOfList.add(strs1); 
    listOfList.add(strs2); 

OR

List<List<String>> asList = Arrays.asList(strs1, strs2); 
0

統一它列出名單的列表,三維矩陣 - 即使你的第一個元素是單個值,爲了簡化代碼,將它們包裝在列表中是有意義的:

List<List<List<String>>> matrix = new ArrayList<List<List<String>>>(); 

List<List<String>> row = new ArrayList<List<String>>(); 
matrix.add(row); 

List<String> column1 = new ArrayList<String>(); 
column1.add("element1"); 
row.add(column1); 

List<String> column2 = new ArrayList<String>(); 
column1.add("element2.1"); 
column1.add("element2.2"); 
row.add(column2);