-2
У меня есть список TreeSet<Rate>
. Мне нужно пересечение всех TreeSets в списке. Я проверил reatainAll
, он работает над двумя наборами. Исправьте меня, если я ошибаюсь. Максимальный размер списка - 8.Пересечение всех N наборов в Java
Как я могу получить пересечение всех этих множеств?
public class Rate implements Comparable<Rate> {
private double value = 0.00;
private int restuarentID = 0;
//setters and getters
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + restuarentID;
long temp;
temp = Double.doubleToLongBits(value);
result = prime * result + (int) (temp^(temp >>> 32));
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Rate other = (Rate) obj;
if (restuarentID != other.restuarentID)
return false;
if (Double.doubleToLongBits(value) != Double.doubleToLongBits(other.value))
return false;
return true;
}
@Override
public int compareTo(Rate o) {
int ret = 0;
if (this.getValue() > o.getValue())
ret = 1;
if (this.getValue() < o.getValue())
ret = -1;
if (this.getValue() == o.getValue())
ret = 0;
return ret;
}
}
Используйте 'retainAll' на всех наборах, 2 в то время. – Kayaman
Несмотря на использование 'TreeSet', вы должны реализовать' equals() 'и' hashCode() 'в вашей' Rate', если вы используете его в коллекциях. – RealSkeptic
Вам нужно реализовать 'compareTo (Rate)' для компиляции вашего кода; и, как указано в предыдущем комментарии, вы, вероятно, также захотите переопределить 'equals (Object)'. –