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