存储和检索列表中的列表

时间:2013-06-29 00:00:22

标签: java list arraylist

我想知道是否有更有效的方法来做到这一点。 我试图从列表中调用List

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);

是否有更有效的方法来实现相同的结果? 我不喜欢这种方式的最大原因之一是我必须创建这么多不同的“列表”

修改:
对我来说最大的问题是我试图从数据库中查询数据(即id,年龄,名称),它可以超过100套。我无法动态声明许多List并存储到“mainList”

我的原始设计是使用while循环并清除列表。

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

我不知道clear()列表也清除了mainList中的存储值...

1 个答案:

答案 0 :(得分: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类型的对象(您可以使用您正在使用的任何类替换它)。

如需更有帮助的答案,请尝试分享一些示例代码,以显示您要执行的操作。

现在我们只能猜测你的目标...