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: 新闻中心
分享到:
相关推荐
ArrayList作为Java集合框架中的一员,它提供了丰富的操作接口,包括对元素的添加、删除、修改以及排序等。本篇将重点讲解如何利用ArrayList实现快速排序(Quick Sort)、归并排序(Merge Sort)和堆排序(Heap Sort...
java中对ArrayList进行排序的方法参考
- 对于大量数据的排序,ArrayList的性能可能不如使用LinkedList,因为ArrayList排序时涉及到大量的索引计算和元素移动。 - 如果ArrayList中元素的类型不一致,`Collections.sort()`会抛出ClassCastException异常,...
用java语言编写一个程序实现学员成绩管理,每个学员包括3门课的成绩,从键盘输入学员信息, 包括学号、姓名、三门课成绩,计算出学员的平均成绩,按照学员平均成绩由大到小排序 插入功能:在排序后的学员成绩表中...
然而,ArrayList本身并不提供排序功能,但我们可以借助Java的Collections类提供的sort()方法来实现排序。本文将通过三个示例详细讲解如何在Java中对ArrayList进行排序。 首先,我们来看一个简单的例子,创建一个名...
总结一下,这个示例展示了如何在Java中使用ArrayList,以及如何通过Comparator接口自定义排序规则。ArrayList是动态数组,提供便利的增删改查操作。`Collections.sort()`方法结合Comparator可以实现自定义排序,使得...
ArrayList排序和遍历补充案例.java
总结起来,`Collections.sort()`是Java中对List进行排序的标准工具,它支持自然排序和自定义排序。了解其工作原理和优化技巧,可以帮助我们在编程实践中更高效地处理数据。通过阅读和理解`Collections.sort()`的源码...
### Java 中文姓氏排序详解 #### 一、引言 在处理中文数据时,我们经常需要对含有中文姓名的数据进行排序。Java 提供了多种方式进行排序,包括使用 `Collections.sort()` 方法配合自定义比较器(`Comparator`)。...
### Java中ArrayList的用法详解 #### 一、概述 `ArrayList`是Java集合框架中的一个动态数组类,它能够存储任意类型的对象,并且在运行时动态调整其大小。这使得`ArrayList`成为处理数量未知的数据集合时的一个非常...
`Collections.sort()` 是 Java 中一种快速且高效地对集合(如 ArrayList)进行排序的方法。可以自定义比较器来指定排序规则。 **示例代码分析**: ```java public class Main { public static void main(String[] ...
在Java编程中,基于ArrayList的对象多属性值排序是一项常见的任务,尤其在处理数据集合时。ArrayList是Java集合框架的一部分,它提供了动态数组的功能,允许我们存储和操作对象数组。本主题将深入探讨如何对...
Java针对ArrayList自定义排序的2种实现方法 Java语言中提供了多种方式来实现ArrayList的自定义排序,今天我们将介绍其中的两种实现方法。首先,让我们了解一下ArrayList的基本概念。ArrayList是一种动态数组,能够...
在编程领域,尤其是在Java开发中,排序算法是基础且至关重要的知识。无论是处理数据库查询、数据分析,还是优化程序性能,熟练掌握各种排序算法都显得尤为关键。本资料包聚焦于"Java常用排序算法"和"程序员必须掌握...
总结一下,Java中对ArrayList排序的步骤包括: 1. 创建一个ArrayList,并填充需要排序的对象。 2. 实现Comparator接口,创建一个或多个比较器类,覆盖`compare()`方法,定义排序规则。 3. 使用`Collections.sort()`...
下面我们将深入探讨如何在Java中实现集合的分组与排序。 1. **集合分组**: 集合分组通常涉及到`GroupingBy`操作,这在Java 8引入的流(Stream)API中得到了很好的支持。`Collectors.groupingBy`方法允许我们将...
java List排序工具类 使用示例: new OrderUtils().order(list, "name", OrderUtils.DESC); 相关实例代码: public static void main(String[] args) { List<Person> list = getData(); // 获取无序数据 new ...
在Java编程语言中,ArrayList是...总的来说,对ArrayList中的对象进行排序涉及到Java集合框架的核心概念,包括List接口、Collections工具类以及Comparator接口。理解这些知识点对于编写高效、灵活的Java代码至关重要。