日期:2014-05-19  浏览次数:20663 次

一个数组怎么分类呢 ........????
BookItem类.
有BookID,BookName,CharptName..等字段  

有List<BookItem> 集合.
备注:BookID可以重复

问题:
如何根据BookID归类分组动态创建数组呢.  

比如:
有List<BookItem>数据
BookID,BookName,CharptName
BK001 ,火影, 第一集
BK001 ,火影, 第二集
BK001 ,火影, 第三集
BK002 ,海贼, 第一集
BK003 ,死神, 第一集
加入有这样数据就要动态创建三个List来分别放火影(三集),海贼,死神.

我如何知道内容数据有创建多少个数组呢. 代码怎么实现呢

------解决方案--------------------
你把创建的List,再放入到一个list中 ,然后通过List.size(),不久可以了 ?

list1、list2、list3....

List listAll = new ArrayList() ;
listAll.add(list1) ;
listAll.add(list2) ;
listAll.add(list3) ;
.
.
.

for (int i = 0; i < listAll.size(); i++){
List<BookItem> tmp = (List<BookItem>) listAll.get(i) ;
...
}

不知道我的理解对不对哦
------解决方案--------------------
先通过BookID来排序,然后遍历这些数据,记录下当前的id与上一个id相比,如果不同,那么就新建一个,并且把这个id设置为上一个id存起来用于以后的比较,如果相同,那么就直接放入新建的list当中。
------解决方案--------------------
Map<String,List<BookItem>> map = new HashMap<String,List<BookItem>>;
List<BookItem> list = new ArrayList<BookItem>();
for(BookItem bi:list){
if(map.containsKey(bi.getBookId)){
map.get(bi.getBookId).add(bi);
}
else{
List<BookItem> list1 = new ArrayList<BookItem>();
list1.add(bi);
map.put(bi.getBookId,list1);
}
}
直接用map吧。
------解决方案--------------------
你把创建的List,再放入到一个list中 ,然后通过List.size(),不久可以了 ?

list1、list2、list3....

List listAll = new ArrayList() ;
listAll.add(list1) ;
listAll.add(list2) ;
listAll.add(list3) ;
.
.
.

for (int i = 0; i < listAll.size(); i++){
List<BookItem> tmp = (List<BookItem>) listAll.get(i) ;
...
}