利用Java Set 去除重復(fù)object的方法
更新時間:2017年01月19日 11:09:33 投稿:jingxian
下面小編就為大家?guī)硪黄肑ava Set 去除重復(fù)object的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
實例如下:
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
* 編寫者:CP
* <br />類描述:set集合針對String 類型和8大基礎(chǔ)數(shù)據(jù)類型 過濾掉重復(fù)數(shù)據(jù),如果存放的是其他類型對象,則需要重寫hashCode方法和equals方法,當(dāng)equals 比較相等時,則會去比較hashCode值 hashCode的值 如果一致的話,則不會存進(jìn)set
*/
public class SetDemo {
public static void main(String[] args) {
Set<String> nameSet = new HashSet<String>();
nameSet.add("張三");
nameSet.add("李四");
nameSet.add("王五");
nameSet.add("張三");
// 輸出結(jié)果 張三 李四 王五
for(String name : nameSet){
System.out.print(name + "\t");
}
// List集合去除重復(fù)基礎(chǔ)數(shù)據(jù)
List<String> nameList = new ArrayList<String>();
nameList.add("張三");
nameList.add("李四");
nameList.add("王五");
nameList.add("趙六");
nameSet.addAll(nameList);
// 輸出結(jié)果 張三 李四 王五 趙六
for(String name : nameSet){
System.out.print(name + "\t");
}
// 去除編號和用戶名一樣的 對象,需要重寫 equals 方法 和 hashCode方法
User admin = new User(1, "admin");
User user = new User(2, "user");
User user1 = new User(2, "user");
User admin1 = new User(3, "admin");
Set<User> userSet = new HashSet<User>();
userSet.add(admin);
userSet.add(user);
userSet.add(admin1);
userSet.add(user1);
// 輸入結(jié)果 admin1 admin3 user2
for(User u : userSet){
System.out.print(u.username + u.id + "\t");
}
System.out.println(user.equals(null));
}
}
class User{
protected Integer id;
protected String username;
public User(Integer id, String username){
this.id = id;
this.username = username;
}
/**
* 如果對象類型是User 的話 則返回true 去比較hashCode值
*/
@Override
public boolean equals(Object obj) {
if(obj == null) return false;
if(this == obj) return true;
if(obj instanceof User){
User user =(User)obj;
// if(user.id = this.id) return true; // 只比較id
// 比較id和username 一致時才返回true 之后再去比較 hashCode
if(user.id == this.id && user.username.equals(this.username)) return true;
}
return false;
}
/**
* 重寫hashcode 方法,返回的hashCode 不一樣才認(rèn)定為不同的對象
*/
@Override
public int hashCode() {
// return id.hashCode(); // 只比較id,id一樣就不添加進(jìn)集合
return id.hashCode() * username.hashCode();
}
}
以上這篇利用Java Set 去除重復(fù)object的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
java注解處理器學(xué)習(xí)在編譯期修改語法樹教程
這篇文章主要為大家介紹了java注解處理器學(xué)習(xí)在編譯期修改語法樹教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09
Spring Junit測試找不到SpringJUnit4ClassRunner.class的解決
這篇文章主要介紹了Spring Junit測試找不到SpringJUnit4ClassRunner.class的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-04-04
Springboot2.0配置JPA多數(shù)據(jù)源連接兩個mysql數(shù)據(jù)庫方式
這篇文章主要介紹了Springboot2.0配置JPA多數(shù)據(jù)源連接兩個mysql數(shù)據(jù)庫方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09

