У меня есть два списка массивов типа CRVariable (hibernate class), и я хочу найти их общие элементы (пересечение, я думаю).найти общие элементы в двух списках
Вот мой CRVariable класс спящего режима:
@Entity
@Table(name = "imageviewer_crvariable")
public class CRVariable implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
@Column(name = "VarId")
private Long varId;
@Column(name = "VarName", unique=true)
private String varName;
@Column(name = "VarDescription")
private String varDescription;
private String state;
@ManyToMany(mappedBy="crvariables")
private Set<CRImageType> crimagetypes = new HashSet<CRImageType>();
@OneToMany(mappedBy="cRVariable")
private Set<CRFormField> cRFormFields;
....
Так я пытаюсь использовать Collection # retainAll() метод следующим образом:
...
List<CRVariable> variablesForCurrentImageType = new ArrayList<CRVariable>();
variablesForCurrentImageType = getCRVariablesForImageType(mySelectedImages.get(k));
...
List<CRVariable> mySelectedVariables = Arrays.asList(selectedVariables);
...
Collection<CRVariable> colA1 = new ArrayList<CRVariable>();
colA1.addAll(mySelectedVariables);
Collection<CRVariable> colB1 = new ArrayList<CRVariable>();
colB1.addAll(variablesForCurrentImageType);
...
if(colA1.size()>colB1.size()){
colA1.retainAll(colB1); //intersection
System.out.println(">>>> INTERSECTION SIZE: " + colA1.size());
} else {
colB1.retainAll(colA1); //intersection
System.out.println(">>>> INTERSECTION SIZE: " + colB1.size());
}
...
, но в зависимости от того комбинация, если я пытаюсь я всегда получайте colA1 или colB1 с нулем (0)!
любые идеи о том, что я отсутствовал?
У вас есть переопределенные равные и хэш-коды правильно? –
любая помощь по этому поводу? я думаю, нет! – thanili