Java 集合为什么只能加一个数进去 就在while里面出不来呢?

List<Rational>rationalList = new ArrayList<>();
    Random random = new Random();
    Rational rational = new Rational();
    //产生原分数集合
    for(int i = 0;i < 10;i++){
        do{
            rational.denominator = random.nextInt(Integer.MAX_VALUE);
            rational.numerator = random.nextInt(Integer.MAX_VALUE);
        }while(rationalList.contains(rational));

        rationalList.add(rational);
    }

ListrationalList = new ArrayList<>();
Random random = new Random();
Rational rational;
//产生分数集合
for(int i = 0;i < 10;i++){
do{

int dm = random.nextInt();
int nm = random.nextInt();
rational = new Rational(nm,dm);

        }while(rationalList.contains(rational)); 

        rationalList.add(rational);

    }
    //已解决

rationalList.contains(rational)
这里比较的是引用。
你需要重写Rational的hashCode和equals,使得相同的分数返回true