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;//降序
}
}
新文件:
学号 课程号 成绩
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接口就可以了