**判断2个List<Object>属性是否全部一致.**
1.创建实体类
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ColumnMetaData {
private String columnName;
private String columnType;
private boolean primaryKey;
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
ColumnMetaData that = (ColumnMetaData) o;
return primaryKey == that.primaryKey &&
Objects.equals(columnName, that.columnName) &&
Objects.equals(columnType, that.columnType);
}
@Override
public int hashCode() {
return Objects.hash(columnName, columnType, primaryKey);
}
@Override
public String toString() {
return "ColumnMetaData{" +
"columnName='" + columnName + '\'' +
", columnType='" + columnType + '\'' +
", primaryKey=" + primaryKey +
'}';
}
}
- 重写equals和hashCode方法
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TableMetaData {
private Collection<ColumnMetaData> columnMetaData;
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
TableMetaData that = (TableMetaData) o;
if (columnMetaData.size() != that.getColumnMetaData().size()) {
return false;
}
return columnMetaData.containsAll(that.getColumnMetaData());
}
@Override
public int hashCode() {
return Objects.hash(columnMetaData);
}
}
3.比较的Test类
public class EqualsTest {
public static void main(String[] args) {
ColumnMetaData c1 = new ColumnMetaData("age1", "name", true);
ColumnMetaData c2 = new ColumnMetaData("age2", "name", true);
ColumnMetaData c3 = new ColumnMetaData("age3", "name", true);
ColumnMetaData c4 = new ColumnMetaData("age4", "name", true);
Collection<ColumnMetaData> list1 = Lists.newArrayList(c1, c2, c3);
Collection<ColumnMetaData> list2 = Lists.newArrayList(c1, c2, c3);
TableMetaData table1 = new TableMetaData(list1);
TableMetaData table2 = new TableMetaData(list2);
System.out.println(table1.equals(table2));
}
}
4.查看运行结果.