package ltb6w;

import java.util.Scanner;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Collections;

class GradeStatistic {

Scanner sc=new Scanner(System.in);

private String entername=null ;

private int inputscore = 0;

private List<Mark> al=new ArrayList<Mark>();

private Comparator<Mark> ScoresRanking;
private Comparator<Mark> SortByName;

public GradeStatistic() {

}

class Mark {

private int score;
private String name;

public Mark(String n,int i) {

score=i;
name=n;

}

public int getScore() {

return score;
}

public String getName() {

return name;

}

}

public void enter() throws Exception {

while(true) {

entername= sc.next();

if(entername.equals("over")) {
break;
}

inputscore=sc.nextInt();

al.add(new Mark(entername,inputscore));

System.out.print("姓名:"+this.entername+",分数:"+inputscore+"\n");

}

}

public void getScoresRanking() {

this.ScoresRanking=new ScoresRanking(); //连接上对象

try {
Collections.sort(al,ScoresRanking );
}catch(Exception e) {
e.getMessage();
}

for(int i=0;i<al.size();i++) {

System.out.println("分数排序-->"+"姓名:"+al.get(i).getName()+"分数:"+al.get(i).getScore());

}
}

public void getSortByName() {

this.SortByName=new SortByName();//连接上对象

try {
Collections.sort(al,SortByName );
}catch(Exception e) {
e.getMessage();
}

for(int j=0;j<al.size();j++) {

System.out.println("姓名排序"+"姓名:"+al.get(j).getName()+"分数:"+al.get(j).getScore());

}
}

public class ScoresRanking implements Comparator<Mark>{

//分数排序

public int compare(Mark arg0, Mark arg1) {

return (arg0.getScore()<arg1.getScore()?-1:(arg0.getScore()==arg1.getScore()?0:1));

}

}

public class SortByName implements Comparator<Mark> {

//姓名排序

public int compare(Mark m1,Mark m2) {

return (m1.getName().compareTo(m2.getName()));
}
}

public static void main(String[] args) {

GradeStatistic gs= new GradeStatistic();

System.out.print("输入姓名和分数:"+"\n");

try {
gs.enter();
} catch (Exception e) {

e.printStackTrace();
}

gs.getScoresRanking();//分数排序
gs.getSortByName();//姓名排序

}

}

Comparator 排序 ArrayList 实操练习的更多相关文章

  1. 【Social listening实操】作为一个合格的“增长黑客”,你还得重视外部数据的分析!

    本文转自知乎 作者:苏格兰折耳喵 ----------------------------------------------------- 在本文中,作者引出了"外部数据"这一概 ...

  2. ABP入门系列(1)——学习Abp框架之实操演练

    作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...

  3. 号外号外:9月13号《Speed-BI云平台案例实操--十分钟做报表》开讲了

    引言:如何快速分析纷繁复杂的数据?如何快速做出老板满意的报表?如何快速将Speed-BI云平台运用到实际场景中?         本课程将通过各行各业案例背景,将Speed-BI云平台运用到实际场景中 ...

  4. Mysql MHA(GTID)配置(实操)

    实现环境 centos6.7 MYSQL5.6.36 主:192.168.1.191 从1:192.168.1.145 从2:192.168.1.146 监测:放在从2上 192.168.1.146 ...

  5. Selenium之unittest测试框架详谈及实操

    申明:本文是基于python3.x及selenium3.x. unittest,也可以称为PyUnit,可以用来创建全面的测试套件,可以用于单元自动化测试(模块).功能自动化测试(UI)等等. 官方文 ...

  6. unittest测试框架详谈及实操(二)

    类级别的setUp()方法与tearDown()方法 在实操(一)的例子中,通过setUp()方法为每个测试方法都创建了一个Chrome实例,并且在每个测试方法执行结束后要关闭实例.是不是觉得有个多余 ...

  7. .net基础学java系列(四)Console实操

    上一篇文章 .net基础学java系列(三)徘徊反思 本章节没啥营养,请绕路! 看视频,不实操,对于上了年龄的人来说,是记不住的!我已经看了几遍IDEA的教学视频: https://edu.51cto ...

  8. RTN 实操

    创建房间 test-rtn 10001 e2uii6r7r 8LfwOcreM76OiV1V1y8jXrMG_BNa-cmktpWUznRa:kdYdsEpcYLc5ceWEHPaK0ZDI7Qc=: ...

  9. 6.3 Pandora 实操 - 数据立方

    简介 数据立方是适用于大规模实时数据(每天百亿条,10TB+ 级别数据)查询与分析的数据库系统,提供交互式的访问数据的能力,支持数据过滤.分组.聚合,实现亚秒级以内对亿行级别的数据表进行多维探索分析. ...

随机推荐

  1. bash & vi

    更高效的使用. 选中全文 ggVG 文件头:gg,文档尾:G redo: CTRL+r 折叠代码/打开折叠: zf ,进行折叠 zo, 打开折叠 zc,关闭折叠 跳到匹配{或}处: % 标记当前单词: ...

  2. 【c++基础】从json文件提取数据

    前言 标注数据导出文件是json格式的,也就是python的dict格式,需要读取标注结果,可以使用c++或者python,本文使用c++实现的. JsonCpp简介 JsonCpp是一种轻量级的数据 ...

  3. MarkDown常用语法表

    MarkDown常用语法表 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 Title - 标题 2 H ...

  4. 项目报错 exception 'MongoConnectionException' with message 'Failed to connect to: 127.0.0.1:27017: Authentication failed on database 'www' with username 'www': auth failed' in

    出现这个错误,在官方文档也找到了解释,原来在2.6版本做了很大的改进,其改进涉及到核心.存储.网络.查询和安全性等多方面,自然,其用户登录认证机制也发生了改变,db.system.users的sche ...

  5. 【HDOJ3861】【Tarjan缩点+最小路径覆盖】

    http://acm.hdu.edu.cn/showproblem.php?pid=3861 The King’s Problem Time Limit: 2000/1000 MS (Java/Oth ...

  6. oracle 数据库相关名词--图解

     通过下图,我们可以更好的理解oracle的结构关系. 知识拓展: 知识点及常用的命令如下: 1)通常情况我们称的“数据库”,并不仅指物理的数据集合,他包含物理数据.数据库管理系统.也即物理数据.内存 ...

  7. 炫龙笔记本的gtx965m显卡玩游戏很卡

    这是我遇到的问题,我2016年10月份这样买了一款笔记本,主要看的是性价比吧!神舟.炫龙都是性价比,所以买了炫龙笔记本 配置如下 cpu:i7 4870hq 显卡:gtx965m 内存条:16G 固态 ...

  8. linux ssh的安装与配置以及实现密钥登录

    安装ssh服务器: yum install openssh ssh 配置文件位于/etc/ssh/sshd_config 如果需要允许root用户远程登录,那么vi /etc/ssh/sshd_con ...

  9. 05机器学习实战之Logistic 回归scikit-learn实现

    https://blog.csdn.net/zengxiantao1994/article/details/72787849似然函数 原理:极大似然估计是建立在极大似然原理的基础上的一个统计方法,是概 ...

  10. 理解Lambda表达式和闭包

    了解由函数指针到Lambda表达式的演化过程 Lambda表达式的这种简洁的语法并不是什么古老的秘法,因为它并不难以理解(难以理解的代码只有一个目的,那就是吓唬程序员) #include " ...