Java 我如何根据学生的分数对他们的名字进行排序?
我如何根据学生的分数对他们的名字进行排序?提供学生成绩。我可以使用java中的Java 我如何根据学生的分数对他们的名字进行排序?,java,sorting,hashmap,Java,Sorting,Hashmap,我如何根据学生的分数对他们的名字进行排序?提供学生成绩。我可以使用java中的Collection类进行排序吗?我应该导入什么东西吗 import java.util.*; class ShortRecord { public static void main(String args[]) { // Create a hash map HashMap hm = new HashMap(); // Put elements to the map
Collection
类进行排序吗?我应该导入什么东西吗
import java.util.*;
class ShortRecord {
public static void main(String args[]) {
// Create a hash map
HashMap hm = new HashMap();
// Put elements to the map
hm.put("Zara", new Double(3434.34));
hm.put("Mahnaz", new Double(123.22));
hm.put("Ayan", new Double(1378.00));
hm.put("Daisy", new Double(99.22));
hm.put("Qadir", new Double(-19.08));
// Get a set of the entries
Set set = hm.entrySet();
// Get an iterator
Iterator i = set.iterator();
// Display elements
while (i.hasNext()) {
System.out.print(me.getKey() + ": ");
System.out.println(me.getValue());
}
}
}
如果要按地图的键(即名称)排序,请使用
如果您想根据值进行排序,那么请参见我认为您应该创建一个POJO
Student
类,并实现-然后将这些Student
放在a中,然后执行它。比如
static class Student implements Comparable<Student> {
public Student(String name, double grade) {
this.name = name;
this.grade = grade;
}
String name;
double grade;
@Override
public int compareTo(Student o) {
if (o == null) {
return -1;
}
int c = Double.valueOf(grade).compareTo(o.grade);
if (c != 0) {
return c;
}
return name.compareTo(o.name);
}
@Override
public String toString() {
return String.format("%s has grade %.2f", name, grade);
}
}
public static void main(String[] args) {
List<Student> al = new ArrayList<>();
al.add(new Student("Zara", 3434.34));
al.add(new Student("Mahnaz", 123.22));
al.add(new Student("Ayan", 1378.00));
al.add(new Student("Daisy", 99.22));
al.add(new Student("Qadir", -19.08));
Collections.sort(al);
System.out.println(al);
}
这次使用自定义比较器的另一个示例:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Marks
{
static class SortByMark implements Comparator<Student>
{
@Override
public int compare(Student studentOne, Student studentTwo)
{
return studentOne.mark.compareTo(studentTwo.mark);
}
}
static class Student
{
private final Double mark;
private final String name;
public Student(String name, Double mark)
{
this.name = name;
this.mark = mark;
}
public Double getMark()
{
return mark;
}
public String getName()
{
return name;
}
@Override
public String toString()
{
return name + ": " + mark;
}
}
private final static SortByMark sortByMark = new SortByMark();;
public static void main(String args[])
{
List<Student> students = new ArrayList<Student>();
students.add(new Student("Zara", new Double(3434.34)));
students.add(new Student("Mahnaz", new Double(123.22)));
students.add(new Student("Ayan", new Double(1378.00)));
students.add(new Student("Daisy", new Double(99.22)));
students.add(new Student("Qadir", new Double(-19.08)));
Collections.sort(students, sortByMark);
for (Student student : students)
{
System.out.println(student);
}
}
}
import java.util.ArrayList;
导入java.util.Collections;
导入java.util.Comparator;
导入java.util.List;
公开课分数
{
静态类SortByMark实现了Comparator
{
@凌驾
公共整数比较(学生一、学生二)
{
返回studentOne.mark.compareTo(studentTwo.mark);
}
}
静态班学生
{
私人最终双标记;
私有最终字符串名;
公立学生(字符串名称,双标记)
{
this.name=名称;
这个。马克=马克;
}
公共双getMark()
{
返回标记;
}
公共字符串getName()
{
返回名称;
}
@凌驾
公共字符串toString()
{
返回名称+“:”+标记;
}
}
私有最终静态SortByMark SortByMark=新SortByMark();;
公共静态void main(字符串参数[])
{
List students=new ArrayList();
增加(新学生(“Zara”,新双(3434.34));
增加(新学生(“Mahnaz”,新双人(123.22));
增加(新学生(“阿扬”,新双(1378.00));
学生。加上(新学生(“黛西”,新双人(99.22));
增加(新学生(“Qadir”,新双(-19.08));
集合。排序(学生、排序标记);
用于(学生:学生)
{
系统输出打印(学生);
}
}
}
如果您想要排序,那么您应该查看Comparable
和Comparator
接口。这里我想根据他们提供的帐户余额来缩短名称。如果您想要按地图键排序,那么使用java.util.TreeMap。如果您想根据值进行排序,请参见?@user3809570提供一个sampleSombody有一个否定标记?评论多于回答这个问题已经回答了,它是重复的。
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Marks
{
static class SortByMark implements Comparator<Student>
{
@Override
public int compare(Student studentOne, Student studentTwo)
{
return studentOne.mark.compareTo(studentTwo.mark);
}
}
static class Student
{
private final Double mark;
private final String name;
public Student(String name, Double mark)
{
this.name = name;
this.mark = mark;
}
public Double getMark()
{
return mark;
}
public String getName()
{
return name;
}
@Override
public String toString()
{
return name + ": " + mark;
}
}
private final static SortByMark sortByMark = new SortByMark();;
public static void main(String args[])
{
List<Student> students = new ArrayList<Student>();
students.add(new Student("Zara", new Double(3434.34)));
students.add(new Student("Mahnaz", new Double(123.22)));
students.add(new Student("Ayan", new Double(1378.00)));
students.add(new Student("Daisy", new Double(99.22)));
students.add(new Student("Qadir", new Double(-19.08)));
Collections.sort(students, sortByMark);
for (Student student : students)
{
System.out.println(student);
}
}
}