7

我有一份 pojos 列表。将此 pojo 列表转换为列表列表,其中每个子列表的大小为 10 或更小。例如,一个大小为 13 的 List 被转换为一个包含两个元素的 List。第一个元素是一个包含 10 个项目的列表,第二个元素是一个包含 3 个项目的列表。

所以数据结构是List<List<pojo>>

要创建此列表列表:

List<List<pojo>> pojoList
counter = 0;
initialise new tempList
iterate list
add current pojo to temp list
if counter = 10 then add tempList to pojoList
reset counter and tempList and continue until list is iterated

有替代解决方案吗?

4

3 回答 3

4

考虑 Guava 的Lists.partition()

于 2013-01-31T18:21:41.930 回答
1

使用子列表

List<Pojo> originalList.... //your list of POJOs  
List<List<Pojo>> pojoList = new ArrayList<List<Pojo>>(originalList/10 + 1);  
for(int i = 0; i < originalList.size(); i+=10){  
    if(i + 10 > originalList.size()){  
         pojoList.add(originalList.subList(i, originalList.size()));
    }
    else{
         pojoList.add(originalList.subList(i, i + 10));  
    }  
}
于 2013-01-31T18:21:10.230 回答
0

您可能可以使用subList.

您仍然需要迭代,但您不需要创建tempList

于 2013-01-31T18:19:22.047 回答