2012-03-09 95 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);