如何创建分数列表?

时间:2014-02-16 14:05:24

标签: java list sorting comparable rational-numbers

我需要一种方法将分数放入ArrayList。我遇到了问题,因为我不知道如何以一种我以后可以比较它们的方式做到这一点,以便对它们进行排序。

注意:我将使用4个或更多分数,我不太确定如何(如果可能的话)使用可比较的类来执行超过2个分数。

例如: 我需要输入1 / 1,3 / 4,7 / 4,2 / 8

然后我需要对它们进行排序(使用列表)从最小到最大。

感谢任何帮助。

3 个答案:

答案 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);