零点工作室

喜欢.net;共同学习C#

导航

从键盘输入若干学生的学号和JAVA课程的成绩

从键盘输入若干学生的学号和JAVA课程的成绩.格式如下

01  87

02  90

03  60

然后按成绩排序. 并写入到文件 C:\java.txt

思路:

class javaScore { string studentno, float  score}

从 system.in 中读入数据,  每一行读入后生成一个 new javaScore, 存放到

一个List 中.

接下来解决排序问题,现在的问题是javaScore类如何排序如何比较大小呢?

在“集合框架”中有两种比较接口:Comparable接口和Comparator接口。像String和Integer等Java内建类实现 Comparable接口以提供一定排序方式,但这样只能实现该接口一次。对于那些没有实现Comparable接口的类、或者自定义的类,您可以通过 Comparator接口来定义您自己的比较方式。

利用Comparable接口创建您自己的类的排序顺序,只是实现compareTo()方法的问题。

若一个类不能用于实现java.lang.Comparable,或者您不喜欢缺省的Comparable行为并想提供自己的排序顺序(可能多种排序方式),你可以实现Comparator接口,从而定义一个比较器。

  (1)int compare(Object o1, Object o2): 对两个对象o1和o2进行比较,如果o1位于o2的前面,则返回负值,如果在排序顺序中认为o1和o2是相同的,返回0,如果o1位于o2的后面,则返回正值

  “与Comparable相似,0返回值不表示元素相等。一个0返回值只是表示两个对象排在同一位置。由Comparator用户决定如何处理。如果两个不相等的元素比较的结果为零,您首先应该确信那就是您要的结果,然后记录行为。”

  (2)boolean equals(Object obj): 指示对象obj是否和比较器相等。

  “该方法覆写Object的equals()方法,检查的是Comparator实现的等同性,不是处于比较状态下的对象。”

 例如

import java.util.Comparator;

public class MyDataComparator implements Comparator {

    public MyDataComparator() {}

    public int compare(Object d1, Object d2) {

        byte[] b1 = (byte[])d1;
        byte[] b2 = (byte[])d2;

        String s1 = new String(b1, "UTF-8");
        String s2 = new String(b2, "UTF-8");
        return s1.compareTo(s2);
    }
}

posted on 2005-12-08 09:18  绝对拯救  阅读(1375)  评论(1)    收藏  举报