2 jjzzggkk jjzzggkk 于 2016.04.27 23:19 提问

求各位大神帮解决一道题目

图片说明

6个回答

qq_25827845
qq_25827845   2016.04.28 10:15
已采纳

package com.package1;

import java.util.*;

public class StuScore {

public static void main(String[] args) {

    TreeSet<Student> ts=new TreeSet<Student>(new Com());
    //添加元素进去
    for(int i=20070301,j=1;i<=20070330;i++,j++)
    {
        ts.add(new Student(i,"同学"+j,"男",(int) (40*Math.random()+60)));
    }

    //迭代循环取出
    Iterator<Student> it=ts.iterator();
    while(it.hasNext())
    {
        Student o1=it.next();
        System.out.println("学号:"+o1.num+"  "+"姓名:"+o1.name+"  "+"性别:"+o1.sex+"  "+"成绩:"+o1.grade);

    }

}

}
//学生类
class Student
{
int num;
int grade;
String name;
String sex;

public Student(int num, String name, String sex, int grade)
{
    this.num=num;
    this.name=name;
    this.sex=sex;
    this.grade=grade;
}

}
class Com implements Comparator
{

@Override
public int compare(Object o1, Object o2) {

    Student s1=(Student) o1;
    Student s2=(Student) o2;
    if(s1.grade>s2.grade)
        return 1;
    if(s1.grade<s2.grade)
        return -1;
    if(s1.grade==s2.grade)
    {
        return new Integer(s1.num).compareTo(new Integer(s2.num));
    }
    return 0;
}

}

打印结果:
学号:20070307 姓名:同学7 性别:男 成绩:62
学号:20070314 姓名:同学14 性别:男 成绩:68
学号:20070324 姓名:同学24 性别:男 成绩:68
学号:20070305 姓名:同学5 性别:男 成绩:70
学号:20070303 姓名:同学3 性别:男 成绩:71
学号:20070319 姓名:同学19 性别:男 成绩:71
学号:20070323 姓名:同学23 性别:男 成绩:74
学号:20070328 姓名:同学28 性别:男 成绩:75
学号:20070310 姓名:同学10 性别:男 成绩:76
学号:20070325 姓名:同学25 性别:男 成绩:77
学号:20070329 姓名:同学29 性别:男 成绩:77
学号:20070308 姓名:同学8 性别:男 成绩:78
学号:20070321 姓名:同学21 性别:男 成绩:78
学号:20070322 姓名:同学22 性别:男 成绩:79
学号:20070326 姓名:同学26 性别:男 成绩:80
学号:20070318 姓名:同学18 性别:男 成绩:83
学号:20070320 姓名:同学20 性别:男 成绩:83
学号:20070316 姓名:同学16 性别:男 成绩:85
学号:20070311 姓名:同学11 性别:男 成绩:86
学号:20070330 姓名:同学30 性别:男 成绩:86
学号:20070312 姓名:同学12 性别:男 成绩:87
学号:20070313 姓名:同学13 性别:男 成绩:87
学号:20070309 姓名:同学9 性别:男 成绩:88
学号:20070327 姓名:同学27 性别:男 成绩:89
学号:20070315 姓名:同学15 性别:男 成绩:93
学号:20070317 姓名:同学17 性别:男 成绩:93
学号:20070301 姓名:同学1 性别:男 成绩:94
学号:20070306 姓名:同学6 性别:男 成绩:96
学号:20070304 姓名:同学4 性别:男 成绩:97
学号:20070302 姓名:同学2 性别:男 成绩:98

caozhy
caozhy   Ds   Rxr 2016.04.27 23:32
liuyihuansmm
liuyihuansmm   2016.04.28 10:21

哈哈,特别喜欢看这种考基础的题。这道题主要考点有两个:
一、Comparable接口
二、集合里的排序方法

首先按照题目来看你肯定需要一个学生类,来放你打印的这些属性(学号啊,姓名啊,巴拉巴拉)。那么考点一就来了,当一个学生A和一个学生B来比较排序
你是按照什么标准来排序呢。你肯定不是年龄大的在前面对吧(神经病啊,题干清清楚楚说的按分数来排序),so....Comparable接口的实现是势在必行
了。
接着就是考点二了,java.util.Collections这个类提供了一些关于集合类常用的静态方法包括:对List容器的排序sort(),逆向排序reverse() ,and so on...
Map的排序话我觉得楼上caozhy这位兄台的连接已经讲的很详细。

finally{
刚巴得!小伙子
}

leiyuxuandeai
leiyuxuandeai   2016.04.28 10:54

图片说明

leiyuxuandeai
leiyuxuandeai   2016.04.28 10:53

图片说明

qq_25827845
qq_25827845   2016.07.14 10:24

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeMap;

public class Test2{

public static void main(String[] args){

    ArrayList<Student>al=new ArrayList<Student>();
    for(int i=20070301,j=10;i<=20070330;i++,j++)
    {
        al.add(new Student(i,(int) (40*Math.random()+60), "同学"+j));
    }

// Iteratorit=al.iterator();
//

// while(it.hasNext()){
//

// Student s1=it.next();
// System.out.println(s1);
// }
//ArrayList排序借助Collections中的sort()方法实现。
Collections.sort(al, new Sortbygrade());
for(Student sd:al)
System.out.println(sd);

}

}

//学生类
class Student{
int num,grade;
String name;

//构造函数
public Student(int num,int grade,String name){

    this.num=num;
    this.name=name;
    this.grade=grade;
}

public String toString(){

    return "学号:"+this.num+"\t"+"姓名:"+this.name+"    "+"成绩:"+this.grade;
}

}

class Sortbygrade implements Comparator{

@Override
public int compare(Object o1, Object o2) {

    Student s1=(Student) o1;
    Student s2=(Student) o2;
    if(s1.grade>s2.grade)
        return 1;
    if(s1.grade<s2.grade)
        return -1;

// if(s1.grade==s2.grade)

    return 0;
}

}

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
三位数的各位数字之和
#include int main() {    int x,a,b,c,sum=0; printf("请输入一个三位正整数:");    scanf("%d",&x);    a=x/100;    b=(x%100)/10;    c=x%10;    sum=a+b+c;    printf("这个三位数的各位数字之和为:%d\n",sum);
2392: 求各位数字之和
问题描述:编写一个程序,计算任意输入的正整数的各位数字之和。(输入的位数不要超过10位。多组测试数据输入) 作者:何知令 发表时间:2017年2月11日 输入:123 输出:6 代码: /* 问题描述:编写一个程序,计算任意输入的正整数的各位数字之和。(输入的位数不要超过10位。多组测试数据输入) 作者:何知令 发表时间:2017年2月11日 输入:123 输出:6 */ #inclu
IP地址分类编址
1 IP地址的用途、分类及表示方法IP用途 标记某个主机所在的位置 种类 分类编址:早期设计,存在缺陷 无分类编址:用来代替分类编址 IP地址的表示方法 二进制记法(1000 0001 0000 1011 0000 1011 1110 1111) 点分十进制记法(可读性高)(129.11.11.239) 十六进制记法(注册表、编程使用)(0x810B0BEF) 2 IP地址分类编址
动态规划——如何分析一道动态规划的题
动态规划与其他的算法不一样,动态规划是没有一个固定的模板的,它只是一种思想,并不是一种特殊算法。 那么,动态规划既然没有一个固定的模板,那怎么来分析它呢?或者说,做出来了怎么写题解呢?这里给大家介绍一种分析动态规划的方法: 1:写出DP状态的表达。也就是f[XX]等于XX。 2:写出DP的转移方程。也就是f[XX] = min(f[XX],f[XX]) 3:写出状态的数
android的日积月累-显示&窗口
获取显示屏幕信息      Display display = getWindowManager().getDefaultDisplay();      Resource.nDisplayWidth = display.getWidth();      Resource.nDisplayHeight = display.getHeight();   从系统属性中获取现在BUILD的信息
c语言水仙花
求水仙花,这是一道很简单的题目,大家一看就会
题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。(java)
/** * 题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。 * 思路:将数字转化为String,求出长度即位数,最后倒序输出 */ import java.util.Scanner;public class 倒序输出几位数 { public static int getNum(String str){ int length = str.
计算器小型应用
小型计算器功能不太完善 求各位大神指教
给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字
//第一种方法: 对数取余数     /*     int a = 0, i = 0;     printf("请输入一个不多于5位的正整数:\n");     scanf("%d", &a);     printf("逆序为:\n");     while (a > 0) {         printf("%d ", a % 10);//逐次取个位数,输出         a
求各位的大神
请问各位大神android中startactivityforresult与statrtactivity的区别