首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

java资料中的数据排序

2013-07-16 
java文件中的数据排序public class Elective {private String esno//学号private String ecno//课程号pr

java文件中的数据排序
public class Elective {
private String esno;    //学号
private String ecno;    //课程号
private int egrade;    //成绩
public Elective(){

}

学号        课程号 成绩
11403090101 01 98
11403090102 02 88
11403090103 01 77
11403090104 01 100对

在文件中对成绩降序排序,请各位给我具体实现的代码,谢谢 排序
[解决办法]
把实体类放到TreeSet集合里,当comparaTo>0时,正常顺序添加
[解决办法]
public class Elective implements Comparable {
    private String esno;  
    private String ecno;   
    private int egrade;

    Elective (String esno,String ecno,int egrade) {
this.esno= esno;
        this.ecno= ecno;
        this.egrade= egrade;
    }

@Override
public String toString() {

}

@Override
public int compareTo(Object o) {
return -2;
}


public class TestTreeSet {

public static void main(String[] args) {
ATreeSet a1 = new ATreeSet();
ATreeSet a2 = new ATreeSet();
ATreeSet a3 = new ATreeSet();

TreeSet t = new TreeSet();
t.add(a1);
t.add(a3);
t.add(a2);
System.out.println(t);
}

}
[解决办法]
仅供参考:

import java.util.*;
import java.io.*;

public class SortStoreFile{
    public static void main(String[] args){
        try{
            BufferedReader bf = new BufferedReader(new FileReader("d:\\score.txt"));//打开文件读


            BufferedWriter bw = new BufferedWriter(new FileWriter("d:\\newScore.txt"));//打开文件写
            String in = "";
            String[] data = null;
            List<Score> list = new ArrayList<Score>();//产生容器对象

            in = bf.readLine();//读第一行
            bw.write(in + "\r\n");//写第一行.
            //循环一行一行读
            while((in=bf.readLine()) != null){
                data = in.split(" ");
                if(data == null 
[解决办法]
 data.length != 3){//如果是回车或其他不完整的数据,跳过
                    continue;
                }
                //System.out.println(data.length);
                Score s = new Score();//定义成绩对象.
                s.setEsno(data[0]);
                s.setEcno(data[1]);
                int egrade = Integer.parseInt(data[2].trim());
                s.setEgrade(egrade);
                list.add(s);//存入容器.
            }

            Collections.sort(list);//排序
            //将排序好的内容写入文件
            for(Score s:list){
                bw.write(s.toString()+"\r\n");


            }
            bf.close();
            bw.close();
        }
        catch(FileNotFoundException fnfe){
            fnfe.printStackTrace();
        }
        catch(IOException ioe){
            ioe.printStackTrace();
        }
    }
}
//成绩类
class Score implements Comparable<Score>{
    private String esno;    //学号
    private String ecno;    //课程号
    private int egrade;    //成绩
    public Score(){}
    public void setEsno(String esno){
        this.esno = esno;
    }
    public String getEsno(){
        return esno;
    }
    public void setEcno(String ecno){
        this.ecno = ecno;
    }
    public String getEcno(){
        return ecno;
    }
    public void setEgrade(int egrade){
        this.egrade = egrade;
    }
    public int getEgrade(){
        return egrade;
    }
    public String toString(){
        return esno + " " + ecno + " " + egrade;
    }
    public int compareTo(Score other){
        return  other.egrade - this.egrade;//降序
    }
}


原文件:
学号        课程号 成绩
11403090101 01 98
11403090102 02 88
11403090103 01 77
11403090104 01 100
11403090105 02 99



新文件:
学号        课程号 成绩
11403090104 01 100
11403090105 02 99
11403090101 01 98
11403090102 02 88
11403090103 01 77

[解决办法]
4L代码的精华:
    public int compareTo(Score other){
        return  other.egrade - this.egrade;//降序
    }

Collections.sort(list);//排序
[解决办法]
4楼正解,主要实现Comparable接口就可以了

热点排行