问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java 对象数组排序的问题,急急急急

发布网友 发布时间:2022-05-10 07:01

我来回答

4个回答

热心网友 时间:2023-07-27 13:36

修改Score类声明,实现java.lang.Comparable接口;
public class Score implements java.lang.Comparable{

在方法getStuInfomation() 后追加两个方法(compareTo为Comparable接口要求实现此方法,toString为重写基类的打印输出方法):
    public int compareTo(Object otherScore) {
        return this.stuScore - ((Score) otherScore).stuScore;
    }

    public String toString() {
        return "[学号:" + stuNumber + "分数:" + stuScore + "姓名:" + stuName + "]";
    }
重新编译Score.java,再运行Test,输出结果为:
----------
[学号:3分数:323姓名:Lily]
[学号:5分数:332姓名:Mike]
[学号:2分数:445姓名:Fangfang]
[学号:1分数:472姓名:Liming]
[学号:4分数:540姓名:Green]

-->2008/04/05
哎......
package method2;

import java.util.ArrayList;
import java.util.Collections;

public class Test {

    public static void main(String args[]) {
        ArrayList list = new ArrayList();
        list.add(new Score(1, "Liming", 472));
        list.add(new Score(2, "Fangfang", 445));
        list.add(new Score(3, "Lily", 323));
        list.add(new Score(4, "Green", 540));
        list.add(new Score(5, "Mike", 332));

        Collections.sort(list, new StuScoreComparator());

        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i).toString());
        }

        Collections.binarySearch(list, new Score(1, "Liming", 472));
    }
}

class StuScoreComparator extends Score implements java.util.Comparator {

    public int compare(Object o1, Object o2) {
        Score score1 = (Score) o1;
        Score score2 = (Score) o2;
        return score1.getStuScore() - score2.getStuScore();
    }
}

package method2;

/**
 *
 * @author Liuchao
 */
public class Score implements java.lang.Comparable {

    private int stuNumber;
    private String stuName;
    private int stuScore;

    Score() {

    }

    public Score(int stuNumber, String stuName, int stuScore) {
        if (stuNumber > 0) {
            this.stuNumber = stuNumber;
        } else {
            System.out.println("输入的学生学号不正确");
            System.exit(1);
        }
        if (stuScore > 0) {
            this.stuScore = stuScore;
        } else {
            System.out.println("输入的学生学号不正确");
            System.exit(1);
        }
        this.stuName = stuName;
    }//设置学生信息
    public void setStuNumber(int stuNumber) {
        this.stuNumber = stuNumber;
    }//设置学生学号
    public void setStuScore(int stuScore) {
        this.stuScore = stuScore;
    }//设置学生分数
    public void setStuName(String stuName) {
        this.stuName = stuName;
    }//设置学生名字
    public int getStuNumber() {
        return this.stuNumber;
    }//设置学生学号
    public int getStuScore() {
        return this.stuScore;
    }//设置学生分数
    public String getStuName() {
        return this.stuName;
    }//获取学生名字
    public String getStuInfomation() {
        return "名字:" + this.stuName + " 学号:" + this.stuNumber + " 成绩:" + this.stuScore;
    }//获取学生信息
    public int compareTo(Object otherScore) {
        return this.stuScore - ((Score) otherScore).stuScore;
    }

    public String toString() {
        return "[学号:" + stuNumber + "分数:" + stuScore + "姓名:" + stuName + "]";
    }
}

热心网友 时间:2023-07-27 13:36

你对java 思想理解得不错 基本的操作可以吧
不过你把每个学生信息都封装成一个对象,数据量如果大的话就有性能这么一说了。

热心网友 时间:2023-07-27 13:37

如果你只想排序,那么你的做法很正确。但是如果你想使用Collections.binarySearch()方法进行搜索的话,那么list中的对象就需要实现Comparable接口。
下面是我修改后的程序,仅供参考:
--------------------------------------------
import java.util.ArrayList;
import java.util.Collections;

public class Test {
public static void main(String args[]) {
ArrayList<Score> list = new ArrayList<Score>();
list.add(new Score(1, "Liming", 472));
list.add(new Score(2, "Fangfang", 445));
list.add(new Score(3, "Lily", 323));
list.add(new Score(4, "Green", 540));
list.add(new Score(5, "Mike", 332));

Collections.sort(list);

for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i).toString());
}

int n = Collections.binarySearch(list, new Score(1, "Liming", 472));
System.out.println("You found: " + list.get(n));
}
}

/**
*
* @author Liuchao
*/
class Score implements Comparable<Score>{

private int stuNumber;
private String stuName;
private int stuScore;

Score() {
}

public Score(int stuNumber, String stuName, int stuScore) {
if (stuNumber > 0) {
this.stuNumber = stuNumber;
} else {
System.out.println("输入的学生学号不正确");
System.exit(1);
}
if (stuScore > 0) {
this.stuScore = stuScore;
} else {
System.out.println("输入的学生学号不正确");
System.exit(1);
}
this.stuName = stuName;
}// 设置学生信息

public void setStuNumber(int stuNumber) {
this.stuNumber = stuNumber;
}// 设置学生学号

public void setStuScore(int stuScore) {
this.stuScore = stuScore;
}// 设置学生分数

public void setStuName(String stuName) {
this.stuName = stuName;
}// 设置学生名字

public int getStuNumber() {
return this.stuNumber;
}// 设置学生学号

public int getStuScore() {
return this.stuScore;
}// 设置学生分数

public String getStuName() {
return this.stuName;
}// 获取学生名字

// 获取学生信息
public String toString() {
return "名字:" + this.stuName + " 学号:" + this.stuNumber + " 成绩:"
+ this.stuScore;
}

public int compareTo(Score otherScore) {
return this.stuScore - otherScore.stuScore ;
}

}

热心网友 时间:2023-07-27 13:37

我看到就晕晕了。。我还是初学者。。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
厦门有哪些建材店 六年级的我们会想些什么 为什么我没用平安信用卡里面的钱工作人员还说我有欠款没还? 抖音直播间粉丝等级怎么算的呀? ...不记得,只知道大概是那里人,精确查找还可以找到吗 几年前我被好友拖到黑名单 怎么找回她的qq号 微信好友被删了,还可以找回来吗,号码什么都不记得了, 家里的座机和手机绑定,中途可不可以换个手机号绑定?老号想注销!!_百 ... 我的手机卡是和固定电话捆绑的,一个月前手机丢了,今天交话费才知捡到... 移动机卡绑定问题 拖肥吃多了会怎样,是垃圾食品吗? java对象数组排序问题。。。 JAVA 数组中的元素是对象,如何给对象排序 java对象数组排序 Java怎样用数组创建对象,并对对象里的属性排序? 莘莘学子苦耕耘,钟灵毓秀........来自谁的诗词?整首诗是什么? JAVA如何以数组中的一列作为标准进行排序。 莘莘学子近义词 莘莘学子的意思。 芸芸学子 和莘莘学子有什么不一样 “莘莘学子苦耕耘,钟灵毓秀....”来自谁的诗词?整首诗内容是什么? 莘莘学子下一句是什么 莘莘学子是什么意思? 成语“莘莘学子”是什么意思? 莘莘学子的意思 “莘莘学子”是什么意思? “莘莘学子苦耕耘”出自何处?表达了什么情感? 莘莘学子是什么意思 W10系统 怎样设置不输入密码直接进入电脑 姓名网大家帮我女儿取个名字!!!谢谢 求教:java里面怎么创建对象数组,然后使其按一定规律排序? JAVA中对数组排序除了冒泡和直接遍历外还有没更好的方法? java对象数组排序中如何让性别为女的排在前面 java读取数组,然后对数组进行排序 什么叫做拖肥糖? 怎样写安管员自我评价 冶金安全员转正自评怎样写(来公司后在遵守规章制度、工作适用程度、工作... 工程单位安全员的自我评价怎么写 怎么用电饭煲煮白米粥? 安全员入职简历怎么写 做保险工作要续合约,怎么写工作自我评价 潮州市羽田文化传播有限公司怎么样? 安全员转正申请书怎么写。我是工地安全员急急。 厦门市金沙海岸建设工程有限公司怎么样? 贵州金鑫博达财务咨询有限公司怎么样? 宁波彩舜印刷材料有限公司怎么样? 给姓周的女孩起名字阴历09年12月23 虎年女孩子姓周取名 怎样订酒店便宜! 2010年3月9号中午11点25分出生的女孩缺什么?姓周取什么名字好?