多个分数之间的操作,比较分数的大小必须用Comparable<T>接口或Comparator<T>接口)。利用图行界面表现出这些分数由大到小和由小到大的结果。排序要去掉相同的分数
时间: 2024-02-28 22:53:15 浏览: 170
MultipleComparatorSorting:使用多个比较器进行动态排序
好的,让我来解答你的问题。
首先,我们需要定义一个分数类,该类实现了Comparable接口,可以进行大小比较。下面是一个简单的分数类的示例代码:
```java
public class Fraction implements Comparable<Fraction> {
private int numerator; // 分子
private int denominator; // 分母
// 构造函数
public Fraction(int numerator, int denominator) {
this.numerator = numerator;
this.denominator = denominator;
}
// 实现Comparable接口的compareTo方法
@Override
public int compareTo(Fraction o) {
double diff = (double) this.numerator / this.denominator - (double) o.numerator / o.denominator;
if (diff > 0) {
return -1; // 大于
} else if (diff < 0) {
return 1; // 小于
} else {
return 0; // 等于
}
}
// getter和setter方法
public int getNumerator() {
return numerator;
}
public void setNumerator(int numerator) {
this.numerator = numerator;
}
public int getDenominator() {
return denominator;
}
public void setDenominator(int denominator) {
this.denominator = denominator;
}
// 重写toString方法
@Override
public String toString() {
return numerator + "/" + denominator;
}
}
```
接下来,我们可以使用java.util包中的Collections类来对一组分数进行排序。下面是一个简单的示例代码:
```java
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Fraction> fractions = new ArrayList<>();
fractions.add(new Fraction(1, 2));
fractions.add(new Fraction(3, 4));
fractions.add(new Fraction(2, 3));
fractions.add(new Fraction(1, 2));
fractions.add(new Fraction(5, 6));
// 排序并去重
Collections.sort(fractions);
List<Fraction> uniqueFractions = new ArrayList<>();
Fraction prevFraction = null;
for (Fraction fraction : fractions) {
if (prevFraction == null || fraction.compareTo(prevFraction) != 0) {
uniqueFractions.add(fraction);
}
prevFraction = fraction;
}
// 输出结果
System.out.println("从大到小排序:");
for (Fraction fraction : uniqueFractions) {
System.out.println(fraction);
}
System.out.println("从小到大排序:");
Collections.reverse(uniqueFractions);
for (Fraction fraction : uniqueFractions) {
System.out.println(fraction);
}
}
}
```
该示例代码中,我们首先创建了一个Fraction类型的List,其中包含了几个分数。我们使用Collections.sort()方法对这些分数进行排序,并使用一个新的List去重。最后,我们分别输出了按照从大到小和从小到大的顺序排序后的分数。
希望这个示例能够帮助你理解如何使用Comparable接口和Collections类来对分数进行排序。如果你有其他问题,欢迎继续提问。
阅读全文