java ArrayList排序

http://hi.baidu.com/suofang/blog/item/76cbd962be93f4dae7113ad2.html

 

public class ListSort {

 public static void main(String args[]){
  List list=new ArrayList();
  Category c=new Category();
  c.setCategoryName("服务展示");
  c.setCategoryId(1);
  c.setParId(0);
  
  list.add(c);
  c=new Category();
  c.setCategoryId(2);
  c.setCategoryName("用户注册");
  c.setParId(0);
  list.add(c);
  
  c=new Category();
  c.setCategoryId(3);
  c.setCategoryName("劳动就业"); //二级目录
  c.setParId(1);
  list.add(c);
  c=new Category();
  c.setCategoryId(4);
  c.setCategoryName("少儿保险");
  c.setParId(1);
  list.add(c);
  
  c=new Category();
  c.setCategoryId(5);
  c.setCategoryName("信息发布");
  c.setParId(0);
  list.add(c);
  
  c=new Category();
  c.setCategoryId(7);
  c.setCategoryName("新闻中心");
  c.setParId(5);
  list.add(c);
  
  c=new Category();
  c.setCategoryId(8);
  c.setCategoryName("养老保险");
  c.setParId(1);
  list.add(c);
  /*c=new Category();
  c.setCategoryId(6);
  c.setCategoryName("招工信息");//三级目录
  c.setParId(3);
  list.add(c);*/
  
  CategoryComparator cc=new ListSort().new CategoryComparator();
  
  Collections.sort(list,cc);          // 排序
  Collections.reverse(list); 
  for(Object o:list){
   Category ca=(Category)o;
   System.out.println(ca.getParId()+"------"+ca.getCategoryName());
  }
 }
 
 private class CategoryComparator implements Comparator{       //实现排序算法

   public int compare(Object o1, Object o2) {
   Category c1=(Category)o1;
   Category c2=(Category)o2;
     if(c1.getParId()==c2.getParId()){
    return 0;
   }
   else if(c1.getParId()>c2.getParId()){
    return c1.getParId();
   }
  return c2.getParId(); //实现了二级目录,三级目录就不行了
 }
}
}

 

---------------------------

public class ListSort {
       List sortList=new ArrayList(); //用递归会增加一培的内存
     static  List  list=new ArrayList();
 public static void main(String args[]){
  ListSort ls=new ListSort();
  Category c=new Category();
  c.setCategoryName("服务展示");
  c.setCategoryId(1);
  c.setParId(0);
  
  list.add(c);
  c=new Category();
  c.setCategoryId(2);
  c.setCategoryName("用户注册");
  c.setParId(0);
  list.add(c);
  
  c=new Category();
  c.setCategoryId(3);
  c.setCategoryName("劳动就业"); //二级目录
  c.setParId(1);
  list.add(c);
  c=new Category();
  c.setCategoryId(4);
  c.setCategoryName("少儿保险");
  c.setParId(1);
  list.add(c);
  
  c=new Category();
  c.setCategoryId(5);
  c.setCategoryName("信息发布");
  c.setParId(0);
  list.add(c);
  
  c=new Category();
  c.setCategoryId(7);
  c.setCategoryName("新闻中心");
  c.setParId(5);
  list.add(c);
  
  c=new Category();
  c.setCategoryId(8);
  c.setCategoryName("养老保险");
  c.setParId(1);
  list.add(c);
  c=new Category();
  c.setCategoryId(6);
  c.setCategoryName("招工信息");//三级目录
  c.setParId(3);
  list.add(c);

ls.tree(0);
  for(Object o:ls.sortList){
   Category cc=(Category)o;
   System.out.println("id: "+cc.getCategoryId()+"  par: "+cc.getParId()+"  name: "+cc.getCategoryName());
  }
 }

 public void tree(int n){
  int size=list.size();
  for(int i=0;i<size;i++){
   Category c=(Category)list.get(i);
   if(c.getParId()==n){
    sortList.add(c);
    tree(c.getCategoryId());               //自调用,递归
   }
  }
 }
}

显示如下

  id: 1  par: 0  name: 服务展示
id: 3  par: 1  name: 劳动就业
id: 6  par: 3  name: 招工信息
id: 4  par: 1  name: 少儿保险
id: 8  par: 1  name: 养老保险
id: 2  par: 0  name: 用户注册
id: 5  par: 0  name: 信息发布
id: 7  par: 5  name: 新闻中心

 

你可能感兴趣的:(java,C++,c,算法,C#)