をコピーしようとしていますArrayList
が、それを参照しているだけで、実際にはコピーしていないようです。
私のコード:
List<Column> columns = columnData(referencedField.table);
List<Field> newPath = new ArrayList<>(startPath);
System.out.println("Equals? " + (newPath.equals(startPath)));
startPath
ArrayList<Field>
関数に渡されるものです。
分野:
public class Field
{
public String table;
public String column;
public Field(final String table, final String column) {
this.table = table;
this.column = column;
}
@Override
public String toString() {
return "(" + table + ", " + column + ")";
}
@Override
public int hashCode() {
int hash = 3;
hash = 67 * hash + Objects.hashCode(this.table);
hash = 67 * hash + Objects.hashCode(this.column);
return hash;
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final Field other = (Field) obj;
if (!Objects.equals(this.table, other.table)) {
return false;
}
if (!Objects.equals(this.column, other.column)) {
return false;
}
return true;
}
}
今、クローン作成について読みましたが、経験がありません。同じ内容で要素が等しくなるように、クローンが実際に新しいオブジェクトのリストを作成して、それらがもう等しくないようにするかどうか、私は実際に疑問に思っています。
言い換えると、リストをマップに追加する必要がある再帰関数であるリストを使用しているため、startPath
とnewPath
が等しくないため、相互に参照されていないことを確認することです。