0

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

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

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

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

任何帮助表示赞赏。

4

3 回答 3

2

创建一个名为 Fraction 的类,它存储两个变量:分子和分母。然后,您可以制作分数的 ArrayList。

如果您想轻松地对它们进行排序,最好的办法是实现它Comparable

于 2014-02-16T14:08:55.280 回答
1

您可以通过两种方式进行操作,首先您可以将分数作为浮点值,否则创建一个表示分数的类,然后让另一个类实现Interface Comparator。然后使用Collections进行排序。

于 2014-02-16T14:20:19.630 回答
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);
于 2014-02-16T14:25:29.760 回答