2013-06-29 35 views
0

我想知道是否有这样做更有效的方式是恢复列表。 我想从列表存储和列表

public class GetL{ 
public List getList(){ 
    List mainList = new ArrayList(); 
    List subList = new ArrayList(); 
    List subList2 = new ArrayList(); 

    subList.add("one"); 
    subList.add("two"); 
    mainList.add(subList); 

    subList2.add("three"); 
    subList2.add("four"); 
    mainList.add(subList2); 

    return mainList; 
} 
} 

通话清单,我会这样称呼它。

GetL getL = new GetL(); 
List tempList = getL.getList(); 
tempList.get(0); 
tempList.get(1); 

有没有更高效的方法来达到相同的结果? 之一,我不喜欢这种方式的最大原因是,我要创建这么多不同的“列表”

编辑:
对我来说最大的问题是,我想查询从数据数据库(即身份证,年龄,名称),它可以超过100套。我不能动态声明许多列表和存储到“mainList”使用

我原来的设计是while循环,并清除列表。

while(something){ 
    subList.add(something); 
    subList.add(something2); 
    mainList.add(subList); 
    subList.clear(); 
} 

我不知道明确的()名单也清除mainList储值...

+0

的'GET'方法在'ArrayList'类只需要O(1)。在你的情况下,如果你知道你正在寻找的元素的索引,你将不得不做两次'get'。我不认为这是不好的。 – JHS

+0

这真的很难根据你的例子给的建议是:它没有提供任何背景和真的没有任何意义。我想如果你试图提供你想要达到的目标的简单解释,我们会取得更大的成功。如果你这样做,我们可以提出一些很好的建议。 – jahroy

+0

@jahroy对不起,乱码。我从数据库查询数据(如id,年龄,名称),它可以超过100套。而且我不能动态声明那么多列表并将其存储到“mainList” – sayhaha

回答

0

你可以做这样的事情:

/** 
* Returns a list of lists containing Foo objects. 
*/ 

public List<List<Foo>> getListOfLists() { 
    ResultSet rs = // get data from database... 
    List<List<Foo>> mainList = new ArrayList<List<Foo>>(); 
    for (Row r : rs) { 
     List<Foo> subList = new ArrayList<Foo>(); 
     for (Foo f : r.getFooList()) { 
      subList.add(f); 
     } 
     mainList.add(subList); 
    } 
    return mainList; 
} 

上面的代码假定您的数据库查询返回一个ResultSet。

它还假定从ResultSet中的每一行有一个返回的Foo对象列表的方法。

每个子列表包含Foo类型(你可以用你使用任何类替换)的对象。

对于更多有用的答案,请尝试共享一些示例代码,显示你想要做什么。

现在我们只能猜测你以后......