`
keating
  • 浏览: 170047 次
  • 性别: Icon_minigender_1
  • 来自: weihai
社区版块
存档分类
最新评论

Comparator排序的使用 来自head first java

阅读更多
import java.util.*;
import java.io.*;

public class Jukebox5{
  ArrayList<Song> songList=new ArrayList<Song>();
  public static void main(String[] args){
    new Jukebox5().go();
  }

  class ArtistCompare implements Comparator<Song>
  {
	  public int compare(Song one,Song two){
	     return one.getArtist().compareTo(two.getArtist());
	  }
  }
  class RatingCompare implements Comparator<Song>
  {
	  public int compare(Song one,Song two){
	     return one.getRating().compareTo(two.getRating());
	  }
  }
  //Comparator类多好,想按什么排序就按什么排序
  //用sort(List o)以及实现compareTo()就不行喽
  public void go(){
    getSongs();
    System.out.println(songList);
    //Collections.sort(songList);
	//System.out.println(songList);
    //这个排序现在仍然可以用

    ArtistCompare artistCompare=new ArtistCompare();
	Collections.sort(songList,artistCompare);
	System.out.println(songList);

	RatingCompare ratingCompare=new RatingCompare();
	Collections.sort(songList,ratingCompare);
	System.out.println(songList);
  }

  void getSongs(){
    try{
	  File file=new File("SongListMore.txt");
	  BufferedReader reader=new BufferedReader(new FileReader(file));
	  String line=null;
	  while((line=reader.readLine())!=null){
	    addSong(line);
	  }
	}catch(Exception ex){
	  ex.printStackTrace();
	}
  }

  void addSong(String lineToParse){
    String[] tokens=lineToParse.split("/");

	Song nextSong=new Song(tokens[0],tokens[1],tokens[2],tokens[3]);
	songList.add(nextSong);
  }

}

/*
☆调用单一参数的sort(List o)方法代表由list元素上的compareTo()方法来决定顺序。因此元素必须要实现Comparable这个几口。

☆调用sort(list o,Comparator c)方法代表不会调用list元素的compareTo()方法,而会使用Comparator的commpare()方法。这意味着list元素不需要实现Comparable。
*/
分享到:
评论

相关推荐

    java排序Comparator和Comparable

    在Java编程语言中,排序是数据处理中一个非常常见的需求,而`Comparator`和`Comparable`接口则是实现排序的关键工具。这两个接口都是用于比较对象,但它们的应用场景和使用方式有所不同。 首先,`Comparable`接口是...

    Java中的Comparator 对多个排序条件的处理

    在Java编程中,`Comparator`接口是用于比较对象的关键工具,尤其在进行自定义排序时。这个接口提供了`compare()`方法,根据特定的规则来决定两个对象的相对顺序。当需要根据多个排序条件对集合进行排序时,可以使用...

    Comparator 排序器

    在Java编程语言中,`Comparator`接口是一种非常实用且灵活的工具,用于控制对象的排序方式。它允许开发人员自定义对象的比较逻辑,从而实现对集合(如`List`)中的元素进行排序。`Comparator`接口在`java.util`包中...

    java Comparator 用法 例子

    Java中的Comparator接口是排序的关键工具,它允许程序员自定义对象的比较规则,从而在集合、数组或树结构(如TreeSet、TreeMap)中实现定制化的排序。在Java的Collections框架中,Comparator扮演着重要的角色,特别...

    详解JAVA使用Comparator接口实现自定义排序

    JAVA使用Comparator接口实现自定义排序 JAVA中Comparator接口是Java Collections Framework中的一个重要接口,它提供了自定义排序的能力。通过实现Comparator接口,我们可以根据自己的需求来定义对象的排序规则。 ...

    java使用stream对日期排序

    若要进行降序排序,可以使用`Comparator.reverseOrder()`: ```java List&lt;LocalDate&gt; descendingSortedDates = dates.stream() .sorted(Comparator.reverseOrder()) .collect(Collectors.toList()); ``` ...

    程序实现时间排序Comparator

    标题与描述均提到了“程序实现时间排序Comparator”,这表明文章的主题是关于如何在Java编程环境中使用`Comparator`接口来实现基于时间的排序。在Java中,`Comparator`是一个功能强大的工具,允许开发者自定义对象的...

    String,number,String+number的Comparator排序

    在Java编程语言中,`Comparator`接口用于自定义对象的排序规则。`String`, `number`以及`String+number`的`Comparator`排序涉及到如何按照特定逻辑比较字符串、数字以及字符串与数字组合的对象。这篇博客文章(链接...

    Java 中文排序 使用pinyin4j组件

    这里我们将详细介绍如何使用`pinyin4j`这个Java库来实现中文字符串的拼音排序。 `pinyin4j`是一个强大的Java库,它提供了将汉字转换为拼音的功能,这使得我们可以基于每个汉字的拼音首字母来进行排序。以下是如何...

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

    默认情况下,Java使用自然排序,即按照字符串的Unicode值进行排序,这对于英文字符和数字来说通常是合适的,但对于中文字符则不是我们期望的排序方式。 为了实现中文、数字和字母的排序,我们需要创建一个`...

    java 中文姓氏 排序

    Java 提供了多种方式进行排序,包括使用 `Collections.sort()` 方法配合自定义比较器(`Comparator`)。本文将详细介绍如何在 Java 中对包含中文姓氏的对象列表或字符串列表进行排序。 #### 二、基本概念 1. **...

    文件按照window 的排序规则-Java实现

    在Java中,可以使用`File[] listFiles()`方法获取目录下的所有文件,然后通过`Arrays.sort()`排序,但默认是区分大小写的。若要实现不区分大小写的排序,需自定义比较器: ```java Arrays.sort(files, new ...

    java List中对象多属性排序及各属性排序设置

    总结来说,Java中的List可以通过自定义Comparator或者利用泛型和方法引用来实现对象多属性的动态排序。这种技术在处理复杂数据结构时非常有用,使得代码更加简洁且易于维护。通过学习和实践这部分内容,开发者可以...

    List对象集合的排序:比较器Comparator(简单例子)

    在`List`对象集合中使用`Comparator`进行排序,通常需要调用`Collections.sort()`或`list.sort()`方法。例如,假设我们有一个`Person`类,其中包含`name`和`age`属性,我们想要根据年龄对`Person`对象列表进行排序:...

    Java用Comparator来排序.pdf

    本文将深入探讨如何使用Comparator接口来对Java列表进行自定义排序,并介绍相关的编程概念。 首先,`Comparator`接口在Java中扮演着重要的角色,它允许用户自定义对象的比较规则。`Comparator&lt;T&gt;`接口有一个核心...

    java集合某个字段按照中文拼音排序.docx

    在Java中,我们还可以使用Comparator接口和Collator类来实现自定义排序。Collator类可以用来比较中文字符串,并且可以根据中文拼音进行排序。 ```java List&lt;String&gt; list = new ArrayList(); list.add("你"); list....

    java的Comparator和Comparable.docx

    在 Java 中,Comparator 和 Comparable 是两个非常重要的接口,它们用于对象的排序操作。这两个接口都是在 java.util 包中定义的,主要用于定制排序规则。 **一、Comparator 接口** Comparator 接口允许我们创建...

    Java8 Comparator排序方法实例详解

    在Java8中,我们可以使用Comparator的naturalOrder()和reverseOrder()方法来实现自然排序。 例如,对整数列表进行自然排序(升序): ```java List&lt;Integer&gt; list = Arrays.asList(1, 4, 2, 6, 2, 8); list.sort...

    java List 排序 Collections.sort

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

    java 集合分组与排序

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

Global site tag (gtag.js) - Google Analytics