一、利用TreeMap做排序,代码如下:
java.util.SortedMap<Double, scala.Tuple2<String,String>> topN = new java.util.TreeMap<Double, scala.Tuple2<String,String>>();
topN.put(-0.223,new scala.Tuple2<String,String>("1","1"));
topN.put(-0.5239,new scala.Tuple2<String,String>("2","1"));
topN.put(-0.323,new scala.Tuple2<String,String>("3","1"));
topN.put(-0.423,new scala.Tuple2<String,String>("4","1"));
topN.put(-0.523,new scala.Tuple2<String,String>("5","1"));
topN.put(-0.623,new scala.Tuple2<String,String>("6","1"));
for (Map.Entry<Double, scala.Tuple2<String,String>> entry : topN.entrySet()) {
System.out.println(entry.getValue()._1);
}
结果发现,排序输出没有问题,都是从小到大输出;但是如果存在排序值相同的数据时,就会出现数据覆盖。
二、利用Collections.sort 做排序,则不会出现map中的覆盖问题,代码如下:
List<Tuple2<Double,Tuple2<String,String>>> listA = new ArrayList<Tuple2<Double,Tuple2<String,String>>>();
listA.add(new Tuple2<Double,Tuple2<String,String>>(-0.223,new scala.Tuple2<String,String>("1","1")));
listA.add(new Tuple2<Double,Tuple2<String,String>>(-0.5239,new scala.Tuple2<String,String>("2","1")));
listA.add(new Tuple2<Double,Tuple2<String,String>>(-0.323,new scala.Tuple2<String,String>("3","1")));
listA.add(new Tuple2<Double,Tuple2<String,String>>(-0.423,new scala.Tuple2<String,String>("4","1")));
listA.add(new Tuple2<Double,Tuple2<String,String>>(-0.523,new scala.Tuple2<String,String>("5","1")));
listA.add(new Tuple2<Double,Tuple2<String,String>>(-0.623,new scala.Tuple2<String,String>("6","1")));
Collections.sort(listA, new Comparator<Tuple2<Double,Tuple2<String,String>>>() {
public int compare(Tuple2<Double,Tuple2<String,String>> arg0, Tuple2<Double,Tuple2<String,String>> arg1) {
Double d0=arg0._1;
Double d1=arg1._1;
return d0.compareTo(d1);
}
});
for (Tuple2<Double,Tuple2<String,String>> p : listA) {
System.out.println(p._2._1);
}
分享到:
相关推荐
在Java中,我们可以利用`PriorityQueue`类实现堆排序: ```java public class HeapSort { public static void sort(int[] array) { PriorityQueue<Integer> heap = new PriorityQueue(); for (int num : array) ...
它利用了“插入排序在数据近乎有序时效率较高的特点”,通过设置间隔序列(增量序列)来逐步减少元素间的距离,使得整个数组最终接近有序,然后对每个子序列进行插入排序。 Java实现如下: ```java public class ...
设计一个负责排序的程序包,实现多种排序算法,至少包括插入排序、冒泡排序和快速排序算法。 要求: 1.可以对任何简单类型和任意对象进行排序 2.可以支持升序、降序、字典排序等多种顺序要求 3.可以随意增加排序算法...
- **堆排序**:利用堆这种数据结构所设计的一种排序算法,分为创建大顶堆(或小顶堆)和调整堆两个阶段。时间复杂度为O(nlogn)。 4. **归并排序** 归并排序采用分治法,将数组分为两个子数组,然后对这两个子...
堆排序利用了二叉堆结构,将待排序序列构造成一个大顶堆或小顶堆,然后将堆顶元素与末尾元素交换,调整堆,直到所有元素排序完毕。时间复杂度为O(n log n),原地排序但不稳定。 7. 计数排序(Counting Sort) 计数...
4.2.1设计一个由自动测试排序算法性能(比较次数compare_count、交换次数exchange_count、探测次数probe_count)的测试类和排序类构成的类体系。 要求:用一个类来描述一个排序算法,类中的sort方法通过调用比较、...
选择排序是一种简单直观的排序算法...总的来说,Java的选择排序是一种基础的排序算法实现,它利用了数组的特性进行元素的查找和交换。虽然效率较低,但其简单易懂的逻辑使得它在教学和理解排序算法方面具有一定的价值。
堆排序利用了完全二叉树的特性,将待排序的序列构造成一个大顶堆或小顶堆,然后将堆顶元素与末尾元素交换,调整堆,继续此过程,直到所有元素排序完毕。Java的PriorityQueue类可以用来实现堆排序的一部分功能。 7. ...
Java中,可以利用优先队列(PriorityQueue)实现堆排序。 7. **计数排序**、**桶排序**和**基数排序**: 这三种排序方法属于非比较型排序,它们不依赖元素之间的比较,而是通过统计或分配元素到特定的桶中来排序。...
总结来说,Java中的基数排序是一种高效的整数排序算法,利用了数字的位值信息进行排序,特别适合处理大数据量的整数数组。通过理解并熟练掌握基数排序的原理和实现,开发者可以在适当的场合下选择该算法以提升程序...
堆排序利用了二叉堆的特性,将待排序的序列构造成一个大顶堆或小顶堆,然后将堆顶元素与末尾元素交换,再调整剩余元素成为新的堆,如此反复。Java中可以使用`PriorityQueue`类实现堆排序。 4. **快速排序(Quick ...
堆排序利用了二叉堆的数据结构。首先将待排序数组构建成一个大顶堆(或小顶堆),然后将堆顶元素与末尾元素交换,调整剩余元素为新的堆,重复此过程直到所有元素均排序。Java中可以使用PriorityQueue类实现堆排序。...
总的来说,这个项目不仅展示了排序算法的基本概念,还演示了如何在Java中利用面向对象编程实现用户交互。了解和掌握这些基础排序算法对于提升编程能力,尤其是解决实际问题的能力,具有极大的帮助。无论你是初学者...
根据给定的信息,本文将详细解释Java中几种重要的排序算法:直接插入排序、折半插入排序、Shell排序、冒泡排序、快速排序、选择排序以及堆排序。 ### 直接插入排序 直接插入排序的基本思想是:将一个记录插入到...
6. **堆排序**:利用堆这种数据结构进行排序,可以原地排序,但不稳定。 7. **希尔排序**:改进的插入排序,通过比较距离较远的元素来减少交换次数,提高了效率。 8. **计数排序**:非基于比较的排序,适用于整数...
为了解决这个问题,我们可以利用Java的泛型和方法引用来实现更加灵活的排序方式。可以定义一个工具类,提供一个方法接收Comparator参数,这样可以根据需要动态设置每个属性的排序方式: ```java public class ...
Java Swing 是Java GUI编程的一个重要库,用于创建桌面应用程序。在这个特定的项目中,开发者使用...通过学习和分析这个项目,开发者不仅可以加深对排序算法的理解,还能学习到如何利用Java Swing创建交互式应用程序。