熟悉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对象中存放的是什么对象,都可以按照指定的排序规则进行排序了。
分享到:
相关推荐
在Java编程中,"list集合树状排序"是一种常见的需求,特别是在处理前端展示的数据时,如使用jQuery的treetable插件。这个场景通常涉及到数据结构的组织和排序,以便前端能够按照树形结构正确地展示层级关系。下面将...
事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。 快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子...
根据给定的文件信息,我们可以总结出以下关于“湖南大学数据结构实验8快速排序实验报告”的相关知识点: ### 快速排序实验背景 快速排序是一种非常高效的排序算法,由英国计算机科学家托尼·霍尔(Tony Hoare)于...
通过深入理解这个基类的实现,开发者可以更有效地集成到自己的项目中,快速实现列表的排序功能。同时,这也是学习MFC和Windows编程的好机会,可以借此了解如何扩展和定制MFC控件以满足特定需求。在使用过程中,如果...
归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法的一个非常典型的应用。它将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。 ```c int merg(int *a, ...
"维吾尔文单词快速排序"是一种专门针对维吾尔文字母表优化的排序方法,它结合了快速排序这一经典算法与维吾尔文的特性。快速排序是由C.A.R. Hoare在1960年提出的,它的核心思想是分治法,通过选择一个基准元素,将...
本程序通过组合使用快速排序和合并排序两种经典排序算法,实现了对两个数组的有效排序与合并。快速排序用于对数组进行预处理,提高效率;合并排序则负责将两个已排序数组合并为一个有序数组。这种方法既利用了快速...
而对于小规模数据或部分有序的数据,插入排序和希尔排序可能更有效率。同时,如果内存不是问题,归并排序能提供稳定性和良好的性能。而当内存有限时,堆排序和快速排序是原地排序的良好选择。 了解这些排序算法的...
快速排序通常明显比其他O(n log n)算法更快,因为它的内部循环可以在大部分架构上更有效地实现。 **代码解析**: ```csharp class QuickSorter { public void Sort(int[] list, int low, int high) { if (high )...
在本讲座中,我们主要探讨了两种排序算法:插入排序(Insertion Sort)和归并排序(Mergesort),这些都是...在理解了这些基础概念后,我们可以进一步探索其他的排序算法,如快速排序、堆排序等,以适应不同的应用场景。
三向切分快速排序通过将数组分为小于、等于和大于基准值的三个部分,可以有效地处理这种情况。 3. **尾递归优化**:通过将递归调用替换为循环,可以减少递归调用栈的深度,从而降低空间复杂度。 总之,快速排序因...
如果坐标数量非常大,考虑使用更高效的排序算法,如快速排序或归并排序,这可以通过实现相应的排序函数来完成。 6. **错误处理**: 编程时还要考虑错误处理,比如坐标是否有效,排序规则是否合理等。 通过这种...
它位于`<algorithm>`头文件中,适用于容器(如vector、list等)中的元素排序。例如,对一个整数向量排序: ```cpp #include #include std::vector<int> vec = {5, 2, 8, 1, 9}; std::sort(vec.begin(), vec.end...
### C#中的三种排序算法:选择排序、冒泡排序与插入排序 在计算机科学领域,排序算法是数据处理中的一项基本技术。...因此,在学习这些基础算法的同时,还需进一步了解如快速排序、归并排序等更高效的排序方法。
本篇文章将深入探讨几种常见的PHP排序方法,包括冒泡排序、快速排序、插入排序和选择排序,通过理解这些算法的工作原理和具体实现,我们可以更有效地对数组或列表进行排序。 ### 冒泡排序(Bubble Sort) 冒泡排序...
除了希尔排序外,根据标题和描述中提到的信息,本文还涉及到了快速排序、堆排序、归并排序和计数排序。这些排序算法也是计算机科学中的经典算法,下面简要介绍它们的基本概念: - **快速排序**:一种高效的排序算法...
对于大数据量的排序需求,Java的集合框架如`List.sort()`也使用了优化的排序算法,如TimSort,它是一种混合排序算法,既保证了稳定排序,又能在大部分情况下保持O(n log n)的时间复杂度。 总的来说,了解并熟练掌握...
`QuickSort`函数接受一个整型数组`List`作为参数,这个数组包含了待排序的行号列表。此外还有最小值`min`、最大值`max`、排序列号`sortCol`、数据类型`dataType`以及排序方向标志`S01`。 #### 数据比较逻辑 `...
综上所述,“c#经典排序”可能涵盖了上述各种排序方法的实现,以及如何在C#中有效应用它们。通过学习和实践这些内容,开发者可以增强其在数据处理和算法设计方面的技能,更好地应对各种编程挑战。