`
edwardcoo
  • 浏览: 15972 次
  • 性别: Icon_minigender_1
  • 来自: 山东
社区版块
存档分类
最新评论

List 快速有效排序

    博客分类:
  • JAVA
阅读更多

熟悉j2se的朋友都知道,List是有序的集合,可以对其进行排序,那么具体又是如何排序的呢?

下面我会列举一下其排序的具体方法:

 

首先,声明一个List对象,放入简单对象:

List list = new ArrayList();
list.add(2);
list.add(1);
list.add(3);
 

一、 默认排序(根据元素的自然顺序 对指定列表按升序进行排序)

 

Collections.sort(list);

排序完成以后的list列表显示如下:

1

2

3

 

如果list对象中,存放的是另外的对象呢?比如Map对象?

将Map对象放入List对象中,每个map对象中放入两个元素seq和name,具体示例代码如下::

Map map =new HashMap();
map.put("seq",2);
map.put("name","zhangsan");
list.add(map);
map =new HashMap();
map.put("seq",1);
map.put("name","wangwu");
list.add(map);
 

二、通过比较器排序(根据指定比较器产生的顺序对指定列表进行排序)

1.声明一个比较器对象,并且重写比较器中的比较规则(按照seq降序排列):

Comparator comp = new Comparator(){
	     public int compare(Object o1,Object o2) {
	         Map p1=(Map)o1;
	         Map p2=(Map)o2;  
	        if(Double.valueOf(p1.get("seq").toString())<Double.valueOf(p2.get("seq").toString()))
	             return 1;
	         else
	             return 0;
	         }
};
 

 

 2.调用sort方法对list中的元素,按照重写的比较规则进行排序:

Collections.sort(list,comp);

 排序后的结果如下:

2---zhangsan

1---wangwu

 

这样无论list对象中存放的是什么对象,都可以按照指定的排序规则进行排序了。

分享到:
评论

相关推荐

    list集合树状排序-java

    在Java编程中,"list集合树状排序"是一种常见的需求,特别是在处理前端展示的数据时,如使用jQuery的treetable插件。这个场景通常涉及到数据结构的组织和排序,以便前端能够按照树形结构正确地展示层级关系。下面将...

    c语言实快速排序算法 quicksort

    事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。 快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子...

    湖南大学数据结构实验8快速排序实验报告

    根据给定的文件信息,我们可以总结出以下关于“湖南大学数据结构实验8快速排序实验报告”的相关知识点: ### 快速排序实验背景 快速排序是一种非常高效的排序算法,由英国计算机科学家托尼·霍尔(Tony Hoare)于...

    VC 中的一个用于ListCtrl表头排序功能基类.rar

    通过深入理解这个基类的实现,开发者可以更有效地集成到自己的项目中,快速实现列表的排序功能。同时,这也是学习MFC和Windows编程的好机会,可以借此了解如何扩展和定制MFC控件以满足特定需求。在使用过程中,如果...

    链表操作、快速排序和归并排序(可运行代码)

    归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法的一个非常典型的应用。它将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。 ```c int merg(int *a, ...

    维吾尔文单词快速排序

    "维吾尔文单词快速排序"是一种专门针对维吾尔文字母表优化的排序方法,它结合了快速排序这一经典算法与维吾尔文的特性。快速排序是由C.A.R. Hoare在1960年提出的,它的核心思想是分治法,通过选择一个基准元素,将...

    合并排序C代码

    本程序通过组合使用快速排序和合并排序两种经典排序算法,实现了对两个数组的有效排序与合并。快速排序用于对数组进行预处理,提高效率;合并排序则负责将两个已排序数组合并为一个有序数组。这种方法既利用了快速...

    java排序简单介绍

    而对于小规模数据或部分有序的数据,插入排序和希尔排序可能更有效率。同时,如果内存不是问题,归并排序能提供稳定性和良好的性能。而当内存有限时,堆排序和快速排序是原地排序的良好选择。 了解这些排序算法的...

    C#实现所有经典排序算法

    快速排序通常明显比其他O(n log n)算法更快,因为它的内部循环可以在大部分架构上更有效地实现。 **代码解析**: ```csharp class QuickSorter { public void Sort(int[] list, int low, int high) { if (high )...

    Lecture+3-2+List结构的排序编程1

    在本讲座中,我们主要探讨了两种排序算法:插入排序(Insertion Sort)和归并排序(Mergesort),这些都是...在理解了这些基础概念后,我们可以进一步探索其他的排序算法,如快速排序、堆排序等,以适应不同的应用场景。

    快速排序算法

    三向切分快速排序通过将数组分为小于、等于和大于基准值的三个部分,可以有效地处理这种情况。 3. **尾递归优化**:通过将递归调用替换为循环,可以减少递归调用栈的深度,从而降低空间复杂度。 总之,快速排序因...

    VB依指定规则排序坐标

    如果坐标数量非常大,考虑使用更高效的排序算法,如快速排序或归并排序,这可以通过实现相应的排序函数来完成。 6. **错误处理**: 编程时还要考虑错误处理,比如坐标是否有效,排序规则是否合理等。 通过这种...

    VC 实现排序操作

    它位于`&lt;algorithm&gt;`头文件中,适用于容器(如vector、list等)中的元素排序。例如,对一个整数向量排序: ```cpp #include #include std::vector&lt;int&gt; vec = {5, 2, 8, 1, 9}; std::sort(vec.begin(), vec.end...

    c#选择排序法 冒泡排序法 插入排序法 3种排序法

    ### C#中的三种排序算法:选择排序、冒泡排序与插入排序 在计算机科学领域,排序算法是数据处理中的一项基本技术。...因此,在学习这些基础算法的同时,还需进一步了解如快速排序、归并排序等更高效的排序方法。

    php的各种排序方法

    本篇文章将深入探讨几种常见的PHP排序方法,包括冒泡排序、快速排序、插入排序和选择排序,通过理解这些算法的工作原理和具体实现,我们可以更有效地对数组或列表进行排序。 ### 冒泡排序(Bubble Sort) 冒泡排序...

    几种排序算法的代码实现

    除了希尔排序外,根据标题和描述中提到的信息,本文还涉及到了快速排序、堆排序、归并排序和计数排序。这些排序算法也是计算机科学中的经典算法,下面简要介绍它们的基本概念: - **快速排序**:一种高效的排序算法...

    Java 三种排序方式

    对于大数据量的排序需求,Java的集合框架如`List.sort()`也使用了优化的排序算法,如TimSort,它是一种混合排序算法,既保证了稳定排序,又能在大部分情况下保持O(n log n)的时间复杂度。 总的来说,了解并熟练掌握...

    StringGrid部分行按列排序

    `QuickSort`函数接受一个整型数组`List`作为参数,这个数组包含了待排序的行号列表。此外还有最小值`min`、最大值`max`、排序列号`sortCol`、数据类型`dataType`以及排序方向标志`S01`。 #### 数据比较逻辑 `...

    c#经典排序

    综上所述,“c#经典排序”可能涵盖了上述各种排序方法的实现,以及如何在C#中有效应用它们。通过学习和实践这些内容,开发者可以增强其在数据处理和算法设计方面的技能,更好地应对各种编程挑战。

Global site tag (gtag.js) - Google Analytics