我需要一种方法将分数放入ArrayList
。我遇到了问题,因为我不知道如何以一种我以后可以比较它们的方式做到这一点,以便对它们进行排序。
注意:我将使用4个或更多分数,我不太确定如何(如果可能的话)使用可比较的类来执行超过2个分数。
例如: 我需要输入1 / 1,3 / 4,7 / 4,2 / 8
然后我需要对它们进行排序(使用列表)从最小到最大。
感谢任何帮助。
答案 0 :(得分:2)
创建一个名为Fraction的类,它存储两个变量:numerator和denominator。 然后,您可以创建一个分数的ArrayList。
如果您想轻松对其进行排序,最好的办法是让它实施Comparable
。
答案 1 :(得分:1)
你可以先做两种方法,你可以将分数作为浮点值,否则创建一个代表分数值的类,然后再创建另一个类实现接口比较器。然后使用集合排序。
答案 2 :(得分:1)
public class Fraction implements Comparable<Fraction> {
private int x1, x2; // implement get/set
public int compareTo(Fraction o) {
double tmp = Math.abs((double)x1 / x2 - (double)o.x1 / o.x2);
if (tmp < 0) return -1;
if (tmp < 1e-9) return 0;
return 1;
}
}
现在:
ArrayList<Fraction> f;
Collections.sort(f);