我有这两个类:
public class Table {
String tableName;
private List <Column> columns;
}
public class Column {
String columnName;
}
我创建了两个Table
类列表:
List<Table> table1 = new ArrayList<Table>();
List<Table> table2 = new ArrayList<Table>()
从Oracle DB获得此列表的值。
table1 = tableDao.ListTabColumns();
table2 = tableDao.ListTabColumns();
我尝试过removeAll
并且无效。
table1.removeAll(table2);
并且...... Set<Table>
和removeAll
也不起作用。
Set<Table> t1 = new HashSet<Table>(table1);
Set<Table> t2 = new HashSet<Table>(table2);
t1.removeAll(t2);
我试图在contains
中使用table1
的{{1}}而不是table2
。
唯一有效的方法是List的每个元素的内部循环,以及List的每个元素的内部循环之后。
for(Table t : table1) {
for(Table x : table2) {
System.out.println(t.getTableName());
for(Column c : x.getColumn()) {
for (Column d : t.getColumn()) {
// Something to display if not contain any equals.
}
}
}
}
但我不认为这是最好的方法。 有人可以帮帮我吗? 提前谢谢!
答案 0 :(得分:0)
我做了这个覆盖并且工作正常:
@Override
public boolean equals(Object obj) {
if (obj == null)
return false;
if (!(obj instanceof Column))
return false;
Column c = (Column) obj;
return this.columnName == null ? false : this.columnName.equals(c.columnName);
}
@Override
public int hashCode() {
return this.columnName == null ? 0 : this.columnName.hashCode();
}
非常感谢,MichałPiątkowski!