HashMap中的key是字符串类型的,而value是一个定义的数据结构类型的,其中包括(String strIP, long startTime......),现在想写一个函数对value中的strIP或者startTime进行排序,应该怎样处理?用什么样的方法?
解决方案 »
- IO死循环问题求教
- 菜鸟求解面向对象中封装为什么会运行出这个结果。
- 急!!急!!!如何将BufferedWriter 最后一个字符去掉?
- HttpConnection 应该用那个jar包啊 它应该如何用啊!
- 能否把字符串转成Color对象
- 在java如何得到所有本机的进程信息?
- 有人又挑事--诋毁java
- 关于用delphi调用Tomcat Soap的问题
- 关于比较器的调用方法
- Java中超大ArrayList的解决方法,求指导
- 一个运行时候,抛出的java.lang.NoClassDefFoundError异常
- 俺是新手,请帮帮小弟,在java中如何自定义一个日期域,格式为:[ - - ].
//store in list
implements Comparable
Collections.sort()
TreeMap(sorted by key,not value)
import java.io.*;
class Student {
private String name;
private float score;public Student(String name ,float score)
{
this.name = name;
this.score = score;
}public Student()
{
name = null;
score = 0;
}public String getName()
{
return name;
}public float getScore()
{
return score;
}public void setName(String name)
{
this.name = name;
}public void setScore(float score)
{
this.score = score;
}
}public class Test {public static void main(String[] args)
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Hashtable v = new Hashtable();
String line = "Start";
String name = null;
float score = 0f;
int i = 0;// 输入
while(!line.equalsIgnoreCase("exit"))
{try{
System.out.print("请输入学生名:");
line = br.readLine();
if (line.equalsIgnoreCase("exit"))
break;
name = line;
System.out.print("请该生输入成绩:");
line = br.readLine();
try {
score = Float.parseFloat(line);
}catch (NumberFormatException e)
{
score = 0;
}
Student student = new Student(name,score);i ++;v.put(new Integer(i),student);
}catch (IOException e){
e.printStackTrace();
}
}Object[] obj = v.values().toArray();
// 排序
Arrays.sort(obj, new Comparator() {public int compare(Object o1, Object o2) {
Student stu1 = (Student)o1;
Student stu2 = (Student)o2;return (int)(stu1.getScore() - stu2.getScore());
}public boolean equals(Object obj) { return true ;}
});
// 输出
for (int i = 0; i < obj.length; i ++)
{
Student stu = (Student)obj[i];
System.out.println("学生:" + stu.getName() + " 成绩:" + stu.getScore());
}
}
}
运行输出:
F:\>javac Test.javaF:\>java Test
请输入学生名:stu1
请该生输入成绩:26
请输入学生名:stu2
请该生输入成绩:56
请输入学生名:stu3
请该生输入成绩:45
请输入学生名:stu9
请该生输入成绩:73
请输入学生名:stu8
请该生输入成绩:45
请输入学生名:exit
学生:stu1 成绩:26.0
学生:stu3 成绩:45.0
学生:stu8 成绩:45.0
学生:stu2 成绩:56.0
学生:stu9 成绩:73.0若要降序输出,只需要将下面语句改为:
public int compare(Object o1, Object o2) {
Student stu1 = (Student)o1;
Student stu2 = (Student)o2;return (int)(stu2.getScore() - stu1.getScore()); // stu2 与 stu1 对换
}
回复 | 收藏此页 | 专题 | 公告 | 管理 | 保存 | 关闭窗口 你点击[管理],输入分数,密码,点击[给分]