亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

利用Java Set 去除重復(fù)object的方法

 更新時(shí)間:2017年01月19日 11:09:33   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇利用Java Set 去除重復(fù)object的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

實(shí)例如下:

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

/**
 * 編寫者:CP
 * <br />類描述:set集合針對(duì)String 類型和8大基礎(chǔ)數(shù)據(jù)類型 過(guò)濾掉重復(fù)數(shù)據(jù),如果存放的是其他類型對(duì)象,則需要重寫hashCode方法和equals方法,當(dāng)equals 比較相等時(shí),則會(huì)去比較hashCode值 hashCode的值 如果一致的話,則不會(huì)存進(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");
		}
		
		// 去除編號(hào)和用戶名一樣的 對(duì)象,需要重寫 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;
	}


	/**
	 * 如果對(duì)象類型是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 一致時(shí)才返回true 之后再去比較 hashCode
			if(user.id == this.id && user.username.equals(this.username)) return true;
			}
		return false;
	}



	/**
	 * 重寫hashcode 方法,返回的hashCode 不一樣才認(rèn)定為不同的對(duì)象
	 */
	@Override
	public int hashCode() {
//		return id.hashCode(); // 只比較id,id一樣就不添加進(jìn)集合
		return id.hashCode() * username.hashCode();
	}

	
}

以上這篇利用Java Set 去除重復(fù)object的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java注解處理器學(xué)習(xí)在編譯期修改語(yǔ)法樹教程

    java注解處理器學(xué)習(xí)在編譯期修改語(yǔ)法樹教程

    這篇文章主要為大家介紹了java注解處理器學(xué)習(xí)在編譯期修改語(yǔ)法樹教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • 詳解Spring Boot自動(dòng)裝配的方法步驟

    詳解Spring Boot自動(dòng)裝配的方法步驟

    這篇文章主要介紹了詳解Spring Boot自動(dòng)裝配的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • 一篇文章教帶你了解Java Spring之自動(dòng)裝配

    一篇文章教帶你了解Java Spring之自動(dòng)裝配

    今天小編就為大家分享一篇關(guān)于Spring中的自動(dòng)裝配,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2021-09-09
  • 掌握模塊化開(kāi)發(fā)Spring Boot子模塊使用技巧

    掌握模塊化開(kāi)發(fā)Spring Boot子模塊使用技巧

    這篇文章主要為大家介紹了掌握模塊化開(kāi)發(fā)Spring Boot子模塊使用技巧詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • Java 8 Stream流強(qiáng)大的原理

    Java 8 Stream流強(qiáng)大的原理

    這篇文章主要介紹了Java 8 Stream流強(qiáng)大的原理,Java 8 API添加了一個(gè)新的抽象稱為流Stream,可以讓你以一種聲明的方式處理數(shù)據(jù)。本文會(huì)對(duì)Stream的實(shí)現(xiàn)原理進(jìn)行剖析,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2021-12-12
  • Spring Junit測(cè)試找不到SpringJUnit4ClassRunner.class的解決

    Spring Junit測(cè)試找不到SpringJUnit4ClassRunner.class的解決

    這篇文章主要介紹了Spring Junit測(cè)試找不到SpringJUnit4ClassRunner.class的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • java項(xiàng)目新建遇到的兩個(gè)問(wèn)題解決

    java項(xiàng)目新建遇到的兩個(gè)問(wèn)題解決

    創(chuàng)建一個(gè)新的Java項(xiàng)目可以通過(guò)多種方式進(jìn)行,包括使用集成開(kāi)發(fā)環(huán)境(IDE)或手動(dòng)創(chuàng)建,下面這篇文章主要給大家介紹了關(guān)于java項(xiàng)目新建遇到的兩個(gè)問(wèn)題,需要的朋友可以參考下
    2024-06-06
  • Java多線程ThreadPoolExecutor詳解

    Java多線程ThreadPoolExecutor詳解

    這篇文章主要介紹了Java多線程ThreadPoolExecutor詳解,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • Springboot2.0配置JPA多數(shù)據(jù)源連接兩個(gè)mysql數(shù)據(jù)庫(kù)方式

    Springboot2.0配置JPA多數(shù)據(jù)源連接兩個(gè)mysql數(shù)據(jù)庫(kù)方式

    這篇文章主要介紹了Springboot2.0配置JPA多數(shù)據(jù)源連接兩個(gè)mysql數(shù)據(jù)庫(kù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 淺談Spring5 響應(yīng)式編程

    淺談Spring5 響應(yīng)式編程

    本篇文章主要介紹了淺談Spring5 響應(yīng)式編程,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01

最新評(píng)論