`
daha33
  • 浏览: 52468 次
社区版块
存档分类
最新评论

JAVA中的排序

    博客分类:
  • java
阅读更多
要实现排序功能,一般有两种途径,这里对基本类型不适用,基本类型一般有Arrays中的静态方法.

1.对象本身实现Comparable接口,那么该类的实例就是可以排序的.

有关Comparable: http://blog.csdn.net/treeroot/archive/2004/09/09/99613.aspx
只要实现了Comparable接口,就可以调用Collections的sort方法对集合中的元素排序.

2.指定一个Comparator,也就是实现了Comparator的类的一个实例.

但是Java本身只提供了一个Comparator的实现,就是Collections.reverseOrder().
该方法返回的是一个已经实现了Comparable接口的反序.

看一下Comparator的全部内容:

public interface Comparator {
  int compare(Object o1, Object o2);
  boolean equals(Object obj);
} 


定义了两个方法,其实我们一般都只需要实现compare方法就行了,因为类都是默认从Object继承,所以会使用Object的equals方法.

Comparator一般都作为一个匿名类出现,对于没有实现Comparable的对象的集合,排序的时候,需要指定一个Comparator.

这里举例说明

对于实现了Comparable的类我们就用最简单的Integer
List list=new ArrayList();
list.add(new Integer(3));
list.add(new Integer(53));
list.add(new Integer(34));
Collections.sort(list);


对于没有实现Comparable的,我们就用Object,按照hashCode大小来排序.
List list= new ArrayList();
list.add(new Object());
list.add(new Object());
list.add(new Object());
Collections.sort(list,new Comparator(){ public int compare(Object o1, Object o2){
                    return (o1.hashCode()-o2.hashCode());}}); 


对集合排序的例子

import java.util.ArrayList;

import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/*
 * 当前文件: TestCollections.java
 * 创建日期: 2005-8-10
 * 版 本 号: 1.0
 * 作 者: kang1
 * 
 */

/**
 * 亲爱的kang1,请您在此详细描述我的用途.
 */

class BookType{
 String idsn;
 String name;
 /**
  * @param idsn
  * @param name
  */
 public BookType(String idsn, String name)
 {
  super();
  this.idsn = idsn;
  this.name = name;
 }
 /**
  * @return Returns the idsn.
  */
 public String getIdsn()
 {
  return idsn;
 }
 /**
  * @param idsn The idsn to set.
  */
 public void setIdsn(String idsn)
 {
  this.idsn = idsn;
 }
 /**
  * @return Returns the name.
  */
 public String getName()
 {
  return name;
 }
 /**
  * @param name The name to set.
  */
 public void setName(String name)
 {
  this.name = name;
 }
}
public class TestCollections
{

 public static void main(String[] args)
 {
  List list=new ArrayList();
  list.add(new BookType("1","k"));
  list.add(new BookType("5","z"));
  list.add(new BookType("4","g"));
  
  Comparator OrderIsdn = new Comparator(){
   public int compare(Object o1, Object o2){
    BookType b1=(BookType)o1;
    BookType b2=(BookType)o2;
    return (b1.getIdsn().hashCode()-b2.getIdsn().hashCode());
   }
  };
  
  Comparator OrderName = new Comparator(){
   public int compare(Object o1, Object o2){
    BookType b1=(BookType)o1;
    BookType b2=(BookType)o2;
    return (b1.getName().hashCode()-b2.getName().hashCode());
   }
  };
  
  Collections.sort(list,OrderName); 
  Collections.reverse(list);
  
  for(int i=0;i<list.size();i++){
   BookType ss=(BookType)list.get(i);
   System.out.print(ss.getIdsn());
   System.out.println(ss.getName());
  }
  
 }
}

分享到:
评论

相关推荐

    java中文排序,数字字母汉字排序

    在Java编程语言中,对包含中文、数字和字母的数据进行排序是一项常见的任务。这个场景下,我们关注的是如何实现一个自定义的排序规则,按照数字、字母和汉字的顺序进行排列。以下是对这一主题的详细解释。 首先,...

    Java 中文排序 使用pinyin4j组件

    在Java编程语言中,对中文字符串进行排序是一个相对复杂的问题,因为中文字符的排序不能简单地按照Unicode编码顺序来处理。通常,我们需要考虑汉字的拼音或者笔画等属性来进行排序。这里我们将详细介绍如何使用`...

    JAVA中排序的方法.doc

    JAVA中排序的方法

    java 中文姓氏 排序

    本文将详细介绍如何在 Java 中对包含中文姓氏的对象列表或字符串列表进行排序。 #### 二、基本概念 1. **Collator 类**:这是 Java 中用于文本排序和检索的标准类。`Collator` 类提供了与语言环境相关的字符串排序...

    JAVA经典排序汇总

    【正文】 ...总的来说,本文涵盖了Java中主要的排序算法,通过实例代码和性能分析,有助于读者系统地学习和掌握排序算法。无论是初学者还是经验丰富的开发者,都能从中受益,提升自己的编程能力。

    java中排序,求最小值、最大值和杨辉三角的题解

    在Java编程语言中,排序、查找最小值和最大值以及杨辉三角是基础且重要的概念。下面我们将逐一探讨这些知识点。 1. **排序算法** - **冒泡排序(Bubble Sort)**:这是一种简单的排序算法,通过重复遍历数组,比较...

    Java 实现ip 地址排序

    Java ip 地址排序Java ip 地址排序Java ip 地址排序Java ip 地址排序

    关于中文英文混合排序javaDemo

    在Java编程语言中,处理中文和英文混合的排序问题是一个常见的需求,特别是在处理用户输入、数据库数据或文件名等场景。这个"关于中文英文混合排序javaDemo"的示例主要展示了如何实现这样的功能。让我们深入探讨一下...

    java数组排序

    在Java编程语言中,数组排序是一项基础且重要的任务。它涉及到不同的算法,这些算法通过比较和交换元素来达到数组元素的有序状态。本篇将详细探讨几种常见的排序算法及其在Java中的实现。 首先,让我们从最简单的...

    java数组自定义排序

    java中数组的自定义排序,种类繁多,简单实现,可自由操控。

    java基础冒泡排序.ppt

    Java基础知识: 冒泡排序详解,简单而详细的讲清楚了,什么是冒泡排序。 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如...

    java冒泡排序代码

    java冒泡排序代码,亲测能用,控制台输入数据,自动排序

    java List 排序 Collections.sort

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

    java 集合分组与排序

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

    java中排序报:Comparison method violates its general contract异常的解决

    在Java编程中,当执行排序操作时,可能会遇到一个特定的异常:“Comparison method violates its general contract”。这个异常通常发生在使用`Arrays.sort()`或`Collections.sort()`方法时,尤其是在从Java 6升级到...

    JAVA 8种排序介绍及实现

    本文将介绍两种常见的排序算法:直接插入排序和希尔排序,并通过Java代码实现来帮助理解。 1. 直接插入排序(直接插入排序) 直接插入排序是一种简单的排序方法,它的工作原理类似于我们平时手动整理扑克牌。在排序...

    数据结构之JAVA排序JAVASORT.pdf

    本文件“数据结构之JAVA排序JAVASORT.pdf”很可能是对Java中排序算法的一个深入探讨。下面我们将详细讲解Java中的排序算法及其重要性。 首先,我们要理解什么是排序。排序是指将一组数据按照特定的顺序进行排列的...

    java中list排序

    Java 中 List 排序 Java 中 List 排序是指在数据库中查出来的列表中对不同的字段重新排序。一般的做法都是使用排序的字段,重新到数据库中查询。如果不到数据库查询,直接在第一次查出来的 List 中排序,无疑会提高...

Global site tag (gtag.js) - Google Analytics