List<Map<String,String>> forumList=dataBaseService.executeQuery(
"SELECT f.fid, f.type, f.name, f.fup, ff.viewperm, ff.formulaperm," +
" a.uid FROM sl_forums f LEFT JOIN sl_forumfields ff " +
"ON ff.fid=f.fid LEFT JOIN sl_access a ON a.fid=f.fid AND " +
"a.allowview='1' WHERE f.status>0 ORDER BY f.type, f.displayorder");
setForums(forumList);  此代码调用了下面的方法
public static void setForums(List<Map<String,String>> forumList)
{
if(forumList!=null)
{

//将forums 分类,分别保存到相对应的分组中
List<Map<String,String>> groups = new ArrayList<Map<String,String>>();
List<Map<String,String>> forums = new ArrayList<Map<String,String>>();
List<Map<String,String>> subs = new ArrayList<Map<String,String>>();
for(Map<String,String> forum:forumList)
{
String type=forum.get("type");
if("group".equals(type)){
groups.add(forum);
}else if("forum".equals(type)){
forums.add(forum);
}else if("sub".equals(type)){
subs.add(forum);
}
}
//清空forumList
forumList.clear();

//
for(Map<String,String> group:groups){
//将groups中数据循环加入forumList
forumList.add(group);

for(Map<String,String> forum:forums){
//forum fup == group fid  
if(group.get("fid").equals(forum.get("fup"))){
forumList.add(forum);
for(Map<String,String> sub:subs){
//forum fup == group fid  
if(forum.get("fid").equals(sub.get("fup"))){
forumList.add(sub);
}
}
}
}
}
}
} if(forumList!=null)
{....  后面省略
他把List 对象 分成类别拆开了,之后有装在一起了 这是想做什么呢 ? 或者这么做有什么好处?

解决方案 »

  1.   

    功底问题,看代码就要看最优秀的。只是想把group|forum|sub---按规定顺序放入ListORDER BY f.type 并不是都能把group,forum,sub按照顺序来排序。也许是 forum ,group ,sub顺序排放可以用两个union all 形成规定有序。
      

  2.   

    这三种应该是有层级关系的吧,应该是3个级别,group-forum-sub,上面代码就是按照层级关系分组吧,页面上根据层级类型直接循环list就行了:group
        forum
            sub
            sub
        forum
            sub
      

  3.   


    list中数据是同级的呀
    ,排序前或许比较乱,排序完就这个样子
       group
       group
       group
       forum
       forum
       forum
       forum
       sub
       sub
       sub
     可是当遍历的时候仍然会遍历到每一个对象,  跟没排序有什么不同??