设计一种java数据结构,按照权重进行排序

设计一种数据结构,其对象有两种权重标识,被称为第一权重和第二权重,还有其自身代表的数字,做三个排序任务,按照第一权重从小到大排序,按照第二权重从大到小排序,按照自身的数字从小到大排序,分别肩膀给排序的结果输出,求各位大神告诉我,我该用哪种数据结构啊??用了个collections.sort,students.add(new Student(34,"b","80"));把"b"当做第一权重,”80“当做第二权重,这样对不对啊??

public enum SortBy {
Number,
Weights1,
Weights2
}

import java.util.Comparator;
 
public class MyComparator implements Comparator<Student>{
 
private SortBy sortBy;
 
public MyComparator (SortBy sortBy){
this.sortBy = sortBy;
}
 
@Override
public int compare(Student s1, Student s2) {
switch (this.sortBy) {
case Weights1:
return s1.getWeights1() - s2.getWeights1();
case Weights2:
return s1.getWeights2() - s2.getWeights2();
default:
return s1.getNumber() - s2.getNumber();
}
}
}

import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedList;
import java.util.List;
 
public class Student {
private int number;
private int weights1;
private int weights2;
 
public Student(int number, int weights1, int weights2) {
this.number = number;
this.weights1 = weights1;
this.weights2 = weights2;
}
 
public int getNumber() {
return this.number;
}
 
public int getWeights1() {
return this.weights1;
}
 
public int getWeights2() {
return this.weights2;
}
 
public static void main(String[] args){
final Student s1 = new Student(1, 20, 300);
final Student s2 = new Student(2, 10, 100);
final Student s3 = new Student(3, 30, 200);
 
final List<Student> array = new LinkedList<Student>();
array.add(s1);
array.add(s2);
array.add(s3);
 
 
final Comparator<Student> numberComparator = new MyComparator(SortBy.Number);
Collections.sort(array, numberComparator);
System.out.println("sort by number");
System.out.print("Number: ");
for(Student s: array){
System.out.print(s.getNumber() + " ");
}
System.out.println("\n\n");
 
 
final Comparator<Student> weights1Comparator1 = new MyComparator(SortBy.Weights1);
System.out.println("sort by weights1");
System.out.print("Number: ");
Collections.sort(array, weights1Comparator1);
for(Student s: array){
System.out.print(s.getNumber() + " ");
}
System.out.println("\n\n");
 
final Comparator<Student> weights2Comparator = new MyComparator(SortBy.Weights2);
System.out.println("sort by weights2");
System.out.print("Number: ");
Collections.sort(array, weights2Comparator);
for(Student s: array){
System.out.print(s.getNumber() + " ");
}
System.out.println("\n\n");
}
}

sort by number
Number: 1 2 3
 
 
sort by weights1
Number: 2 1 3
 
 
sort by weights2
Number: 2 3 1

温馨提示:答案为网友推荐,仅供参考
相似回答