- 编写一个程序,用户键盘录入若干个学生的姓名和分数(程序每次提示用户输入“Y”或“N”决定是否继续录入学生信息,如果用户输入“N”则用户输入完毕)。用户录入完毕后,程序按成绩由高到低的顺序输出学生的姓名和分数(姓名和分数之间用一个空格分割)。【说明:键盘输入可以使用Scanner类】
AC代码如下:
import java.util.*;
public class text
{
public static class StringCompare implements Comparator<Map.Entry<String,Double>> {
public int compare(Map.Entry<String,Double> o1,Map.Entry<String,Double> o2)
{
return -o1.getValue().compareTo(o2.getValue());
}
}
public static void main(String[]args) {
String name= new String();
double score;
Scanner reader = new Scanner(System.in);
String status="Y";
HashMap<String,Double>map = new HashMap<String,Double>();
while ("Y".equals(status))
{
name = reader.next();
score= reader.nextDouble();
status= reader.next();
map.put(name,score);
}
List<Map.Entry<String,Double>> list=
new ArrayList<Map.Entry<String,Double>>(map.entrySet());
Collections.sort(list,new StringCompare());
for (Map.Entry<String,Double> it : list )
{
System.out.println(it.getKey()+" "+it.getValue());
}
}
}
有关HashMap的用法总结:
在使用HashMap时,我们首先需要,创建容器创建方法如下:
HashMap<type,type> map = new HashMap<type,type>();
创建之后需要使用put方法进行数据的传入,使用方式如下
map.put(data,data);这个地方需要保持前后数据类型一致
进行创建之后需要对键和值进行访问这里使用 迭代器的getKey和getValue方法
首先定义迭代器Map.Entry<type,type> it : list //这个list已经是使用Map.Entry<>构造过的了,这样做的原因是方便输出,能否直接输出两个值。
有关Comparator接口的使用方法大家可以看一下这篇博客http://blog.csdn.net/u012250875/article/details/55126531
之后进行输出即可。思路和方法都比较简单