日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java getclass 相等_Java判断2个List集合是否相等(不考虑元素的顺序)

發布時間:2024/9/19 java 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java getclass 相等_Java判断2个List集合是否相等(不考虑元素的顺序) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

現在有兩個對象,他們的一個屬性是list,很明顯兩個對象的list里面的對象,都是相等的,只是這2個list里面的順序不一致,導致這2個對象被判斷為不相等啦,這就是問題,現在要解決這個問題。

問題圖如下:

可以看到這2個對象的呢個list屬性里面數據,咱看起來是一樣的,但是經過equals之后,返回的是false。

所以,需要自己重寫equals方法和hashcode方法,這2個方法一般是一起重寫的。

然后,問題的關鍵就在于,怎么判斷2個list集合是否相等。不考慮順序。

看代碼:

先是這2個對象的代碼

TableMetaData

package com.lxk.model;

import lombok.AllArgsConstructor;

import lombok.Data;

import lombok.NoArgsConstructor;

import java.util.Collection;

import java.util.Objects;

/**

* Table metadata.

*

* @author lxk

*/

@Data

@AllArgsConstructor

@NoArgsConstructor

public class TableMetaData {

private Collection 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);

}

}

然后是,list里面裝的對象的代碼

package com.lxk.model;

import lombok.AllArgsConstructor;

import lombok.Data;

import lombok.NoArgsConstructor;

import java.util.Objects;

/**

* Column metadata.

*

* @author lxk

*/

@Data

@NoArgsConstructor

@AllArgsConstructor

public final 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 +

'}';

}

}

最后就是main方法啦

package com.lxk.commonTest;

import com.google.common.collect.Lists;

import com.lxk.model.ColumnMetaData;

import com.lxk.model.TableMetaData;

import java.util.Collection;

/**

* 測試equals的各種情況

*

* @author lxk on 2018/9/17

*/

public class EqualsTest {

public static void main(String[] args) {

testCollectionEqual();

}

/**

* 比較2個集合是否是相同的,不考慮集合的順序,只要里面的元素確實相同即可。

*/

private static void testCollectionEqual() {

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 list1 = Lists.newArrayList(c1, c2, c3);

Collection list2 = Lists.newArrayList(c2, c3, c1);

TableMetaData table1 = new TableMetaData(list1);

TableMetaData table2 = new TableMetaData(list2);

boolean equals = table1.equals(table2);

System.out.println(equals);

}

}

如上操作之后,這個判斷就可以得到2個對象,是真的相等啦,不會因為list里面值的順序不一致,而返回false啦。

這個問題簡單嗎,簡單就簡單吧,我就喜歡簡單的問題。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內容請查看下面相關鏈接

總結

以上是生活随笔為你收集整理的java getclass 相等_Java判断2个List集合是否相等(不考虑元素的顺序)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。