最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

實(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ù)類型 過濾掉重復(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的Hello World詳解

    Java的Hello World詳解

    當(dāng)我們學(xué)習(xí)一門編程語言的時(shí)候,我們都會(huì)先學(xué)如何輸出Hello World!本文通過幾個(gè)例子給大家介紹輸出Hello World的代碼,感興趣的朋友一起看看吧
    2021-09-09
  • Spring容器的創(chuàng)建過程之如何注冊(cè)BeanPostProcessor詳解

    Spring容器的創(chuàng)建過程之如何注冊(cè)BeanPostProcessor詳解

    關(guān)于BeanPostProcessor 各位一定不陌生,今天整理的這篇文章總結(jié)了如何注冊(cè)BeanPostProcessor,文中有非常詳細(xì)的圖文示例,需要的朋友可以參考下
    2021-06-06
  • Jenkins如何實(shí)現(xiàn)自動(dòng)打包部署linux

    Jenkins如何實(shí)現(xiàn)自動(dòng)打包部署linux

    這篇文章主要介紹了Jenkins如何實(shí)現(xiàn)自動(dòng)打包部署linux,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 深入淺出講解Java8函數(shù)式編程

    深入淺出講解Java8函數(shù)式編程

    不管是前端還是后端開發(fā)人員,學(xué)習(xí)一些函數(shù)式編程的思想和概念,對(duì)于手頭的開發(fā)工作和以后的職業(yè)發(fā)展,都是大有裨益的,下面這篇文章主要給大家介紹了關(guān)于Java8函數(shù)式編程的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • jstl EL表達(dá)式遍歷Map的方法

    jstl EL表達(dá)式遍歷Map的方法

    這篇文章主要介紹了jstl EL表達(dá)式遍歷Map的方法的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • 深入理解 CAS 算法原理已經(jīng)在jdk中的運(yùn)用

    深入理解 CAS 算法原理已經(jīng)在jdk中的運(yùn)用

    這篇文章主要介紹了深入理解 CAS 算法原理已經(jīng)在jdk中的運(yùn)用,幫助大家更好的使用Java,感興趣的朋友可以了解下
    2020-12-12
  • 一文帶你搞懂Java中的泛型和通配符

    一文帶你搞懂Java中的泛型和通配符

    泛型機(jī)制在項(xiàng)目中一直都在使用,甚至很多源碼中都用到了泛型機(jī)制。但是里面很多的機(jī)制和特性一直沒有明白,尤其通配符這塊,經(jīng)常忘記。本文對(duì)此做了一些總結(jié),具有一定借鑒價(jià)值,希望有所幫助
    2022-09-09
  • java數(shù)組排序示例(冒泡排序、快速排序、希爾排序、選擇排序)

    java數(shù)組排序示例(冒泡排序、快速排序、希爾排序、選擇排序)

    java中在運(yùn)用數(shù)組進(jìn)行排序功能時(shí),一般有四種方法:快速排序法、冒泡法、選擇排序法、插入排序法(希爾排序(Shell Sort)是插入排序的一種),下面是一些示例,需要的朋友可以參考下
    2014-03-03
  • Java中@RestController注解使用

    Java中@RestController注解使用

    在Spring框架中,@RestController注解是一個(gè)非常重要的注解,它用于將一個(gè)類標(biāo)記為RESTful風(fēng)格的控制器,本文就來介紹一下Java中@RestController注解使用,感興趣的可以了解一下
    2023-11-11
  • MyBatis映射關(guān)系詳解

    MyBatis映射關(guān)系詳解

    本文重點(diǎn)介紹MyBatis映射關(guān)系重點(diǎn)是映射關(guān)系一對(duì)一,一對(duì)一映射方式結(jié)合應(yīng)用實(shí)例給大家詳細(xì)講解,對(duì)MyBatis映射關(guān)系相關(guān)知識(shí)感興趣的朋友一起看看吧
    2022-11-11

最新評(píng)論

阿克苏市| 哈巴河县| 南昌县| 平阳县| 资兴市| 泸定县| 阳信县| 邮箱| 长垣县| 社旗县| 原平市| 湘阴县| 顺义区| 郸城县| 延寿县| 广汉市| 天水市| 信丰县| 康马县| 建德市| 文登市| 始兴县| 桃园县| 五台县| 奈曼旗| 石林| 临泽县| 曲松县| 上思县| 临沭县| 永和县| 雅江县| 静安区| 北京市| 龙川县| 竹溪县| 定兴县| 南川市| 上犹县| 同仁县| 中方县|