應用場景:經常遇到網路請求回來的資料是乙個list形式的列表,這個list的資料型別是自己定義的資料型別,這裡面包含了重複元素,而重複元素的判斷重複的標準往往是自己定義資料型別的某個成員變數來區分,比如,返回的是裝置資訊,則會有乙個對應的裝置id欄位,如果是人物資訊,返回註冊手機號等等。如果通過for迴圈等手段不僅耗時,還需要同步返回的資料列表。是乙個非常令人頭疼的問題。高效的解決這個問題途徑就是hashset,具體原理暫時先不分析,直接給出應用demo。
比如這是乙個返回的裝置資訊bean類,和網路返回資料json資料相對應。
public class devices
網路請求返回的是乙個list陣列,這時候不要用list來轉換網路請求結果,直接通過hashset來轉換,而實際上僅通過將資料轉換成hashset資料型別,並不能將重複資料徹底清除,因為hashset還不知道定義為「重複」的標準是什麼。因此在上面devices中新增以下**:
@override
public int hashcode()
@override
public boolean equals(object obj)
//對傳入物件上轉型為devices物件
devices mdev = (devices) obj;
//判斷兩個物件裝置id一致認為是乙個裝置
return this.did.equals(mdev.getdid());
}
這樣返回的資料就可以清除其中重複資料,而不用自己手動刪除。關於hashset的原理,後續研究,總之,這個方法簡單快鍵,非常實用,特此記錄。
HashSet去除List重複元素
使用hashset 去重複 例一,list去重複 public class main 排序 hashset h new hashset list list.clear list.addall h system.out.println 排序後 for string string list 列印結果 去...
鍊錶刪除重複元素1,刪除重複元素2,
刪除排序鍊錶中的重複元素 給定乙個排序鍊錶,刪除所有重複的元素,使得每個元素只出現一次。示例 1 輸入 1 1 2 輸出 1 2 示例 2 輸入 1 1 2 3 3 輸出 1 2 3 思路 很簡單。先將兩個指標進行操作,start,end然後判斷end是否等於空即可 definition for s...
STL vector刪除重複元素
stl提供了很多實用的演算法,這裡主要講解sort和unique演算法。刪除重複元素,首先將vector排序。sort vecsrc.begin vecsrc.end 然後使用unique演算法。vecsrc.erase unique vecsrc.begin vecsrc.end vecsrc.e...