`

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 ArrayList实现的快排,归并排序,堆排序

    ArrayList作为Java集合框架中的一员,它提供了丰富的操作接口,包括对元素的添加、删除、修改以及排序等。本篇将重点讲解如何利用ArrayList实现快速排序(Quick Sort)、归并排序(Merge Sort)和堆排序(Heap Sort...

    java中对ArrayList进行排序

    java中对ArrayList进行排序的方法参考

    arrayList排序

    - 对于大量数据的排序,ArrayList的性能可能不如使用LinkedList,因为ArrayList排序时涉及到大量的索引计算和元素移动。 - 如果ArrayList中元素的类型不一致,`Collections.sort()`会抛出ClassCastException异常,...

    java中ArrayList的用法

    ### Java中ArrayList的用法详解 #### 一、概述 `ArrayList`是Java集合框架中的一个动态数组类,它能够存储任意类型的对象,并且在运行时动态调整其大小。这使得`ArrayList`成为处理数量未知的数据集合时的一个非常...

    java ArrayList集合的应用

    用java语言编写一个程序实现学员成绩管理,每个学员包括3门课的成绩,从键盘输入学员信息, 包括学号、姓名、三门课成绩,计算出学员的平均成绩,按照学员平均成绩由大到小排序 插入功能:在排序后的学员成绩表中...

    java对ArrayList排序代码示例

    然而,ArrayList本身并不提供排序功能,但我们可以借助Java的Collections类提供的sort()方法来实现排序。本文将通过三个示例详细讲解如何在Java中对ArrayList进行排序。 首先,我们来看一个简单的例子,创建一个名...

    java的arraylist排序示例(arraylist用法)

    总结一下,这个示例展示了如何在Java中使用ArrayList,以及如何通过Comparator接口自定义排序规则。ArrayList是动态数组,提供便利的增删改查操作。`Collections.sort()`方法结合Comparator可以实现自定义排序,使得...

    ArrayList排序和遍历补充案例.java

    ArrayList排序和遍历补充案例.java

    java List 排序 Collections.sort

    总结起来,`Collections.sort()`是Java中对List进行排序的标准工具,它支持自然排序和自定义排序。了解其工作原理和优化技巧,可以帮助我们在编程实践中更高效地处理数据。通过阅读和理解`Collections.sort()`的源码...

    java 中文姓氏 排序

    ### Java 中文姓氏排序详解 #### 一、引言 在处理中文数据时,我们经常需要对含有中文姓名的数据进行排序。Java 提供了多种方式进行排序,包括使用 `Collections.sort()` 方法配合自定义比较器(`Comparator`)。...

    java冒泡排序java冒泡排序集锦方法!

    `Collections.sort()` 是 Java 中一种快速且高效地对集合(如 ArrayList)进行排序的方法。可以自定义比较器来指定排序规则。 **示例代码分析**: ```java public class Main { public static void main(String[] ...

    基于ArrayList的对象多属性值排序

    在Java编程中,基于ArrayList的对象多属性值排序是一项常见的任务,尤其在处理数据集合时。ArrayList是Java集合框架的一部分,它提供了动态数组的功能,允许我们存储和操作对象数组。本主题将深入探讨如何对...

    Java针对ArrayList自定义排序的2种实现方法

    Java针对ArrayList自定义排序的2种实现方法 Java语言中提供了多种方式来实现ArrayList的自定义排序,今天我们将介绍其中的两种实现方法。首先,让我们了解一下ArrayList的基本概念。ArrayList是一种动态数组,能够...

    Java常用排序算法&程序员必须掌握的8大排序算法+二分法查找

    在编程领域,尤其是在Java开发中,排序算法是基础且至关重要的知识。无论是处理数据库查询、数据分析,还是优化程序性能,熟练掌握各种排序算法都显得尤为关键。本资料包聚焦于"Java常用排序算法"和"程序员必须掌握...

    java教程之二个arraylist排序的示例分享

    总结一下,Java中对ArrayList排序的步骤包括: 1. 创建一个ArrayList,并填充需要排序的对象。 2. 实现Comparator接口,创建一个或多个比较器类,覆盖`compare()`方法,定义排序规则。 3. 使用`Collections.sort()`...

    java 集合分组与排序

    下面我们将深入探讨如何在Java中实现集合的分组与排序。 1. **集合分组**: 集合分组通常涉及到`GroupingBy`操作,这在Java 8引入的流(Stream)API中得到了很好的支持。`Collectors.groupingBy`方法允许我们将...

    java List排序工具类

    java List排序工具类 使用示例: new OrderUtils().order(list, "name", OrderUtils.DESC); 相关实例代码: public static void main(String[] args) { List&lt;Person&gt; list = getData(); // 获取无序数据 new ...

    arraylist 对象 数组排序

    在Java编程语言中,ArrayList是...总的来说,对ArrayList中的对象进行排序涉及到Java集合框架的核心概念,包括List接口、Collections工具类以及Comparator接口。理解这些知识点对于编写高效、灵活的Java代码至关重要。

Global site tag (gtag.js) - Google Analytics