`
geelong
  • 浏览: 117286 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

HashSet 对对象去重

 
阅读更多

import java.util.Set ;
import java.util.HashSet ;
class Person{
	private String name ;
	private int age ;
	public Person(String name,int age){
		this.name = name ;
		this.age = age ;
	}
	public boolean equals(Object obj){	// 覆写equals,完成对象比较
		if(this==obj){
			return true ;
		}
		if(!(obj instanceof Person)){
			return false ;
		}
		Person p = (Person)obj ;	// 向下转型
		if(this.name.equals(p.name)&&this.age==p.age){
			return true ;
		}else{
			return false ;
		}
	}
	public int hashCode(){
		return this.name.hashCode() * this.age	; // 定义一个公式
	}
	public String toString(){
		return "姓名:" + this.name + ";年龄:" + this.age ;
	}
};
public class RepeatDemo02{
	public static void main(String args[]){
		Set<Person> allSet = new HashSet<Person>() ;
		allSet.add(new Person("张三",30)) ;
		allSet.add(new Person("李四",31)) ;
		allSet.add(new Person("王五",32)) ;
		allSet.add(new Person("王五",32)) ;
		allSet.add(new Person("王五",32)) ;
		allSet.add(new Person("赵六",33)) ;
		allSet.add(new Person("孙七",33)) ;
		System.out.println(allSet) ;
	}
};

 对对象去重

 

 

 

 

TreeSet 排序

 

 

import java.util.Set ;
import java.util.TreeSet ;
class Person implements Comparable<Person>{
	private String name ;
	private int age ;
	public Person(String name,int age){
		this.name = name ;
		this.age = age ;
	}
	public String toString(){
		return "姓名:" + this.name + ";年龄:" + this.age ;
	}
	public int compareTo(Person per){
		if(this.age>per.age){
			return 1 ;
		}else if(this.age<per.age){
			return -1 ;
		}else{
			return this.name.compareTo(per.name) ;	// 调用String中的compareTo()方法
		}
	}
};
public class TreeSetDemo04{
	public static void main(String args[]){
		Set<Person> allSet = new TreeSet<Person>() ;
		allSet.add(new Person("张三",30)) ;
		allSet.add(new Person("李四",31)) ;
		allSet.add(new Person("王五",32)) ;
		allSet.add(new Person("王五",32)) ;
		allSet.add(new Person("王五",32)) ;
		allSet.add(new Person("赵六",33)) ;
		allSet.add(new Person("孙七",33)) ;
		System.out.println(allSet) ;
	}
};

 

 

 

分享到:
评论

相关推荐

    HashSet去重

    2. **`equals`方法**:用于判断两个对象是否相等,这是`HashSet`去重的关键。 #### 三、`hashCode`与`equals`方法的重要性 - **`hashCode`方法**:每个对象都有一个哈希码,由对象的`hashCode()`方法返回。`...

    java中List对象列表实现去重或取出及排序的方法

    在Java中,对List对象列表实现去重或取出及排序是一种常见的操作。下面将详细介绍相关的方法和实现。 1. 实体类重写equals和hashCode方法 在Java中,想要去重List对象列表,首先需要重写实体类的equals和hashCode...

    Java中List集合对象去重及按属性去重的8种方法

    以上就是对Java中List集合对象去重及按属性去重的8种方法的详细解释。每种方法都有其适用场景,开发者应根据实际需求选择合适的方法。在实现这些方法时,要确保对象的`equals()`和`hashCode()`方法正确实现,以保证...

    java jsonarray 踢重 去重操作

    在Java中处理JSON数据时,经常需要对JSON数组进行各种操作,其中去重是一个常见的需求。本文将详细介绍如何使用Java对`JSONArray`进行去重操作,并深入探讨背后的原理和技术细节。 ### JSON与Java JSON...

    List对象去重和按照某个字段排序的实现方法

    List对象去重可以使用HashSet来实现。HashSet是一个无序的集合,不能包含重复元素。我们可以将List对象转换为HashSet,然后再将HashSet转换回List对象。这样,重复元素就被自动删除了。 在上面的代码中,我们首先...

    集合类HashSet

    当我们需要对元素执行某些操作,比如调用其方法,可以这样操作:首先,将对象添加到HashSet中;然后,通过HashSet的contains()方法查找对象;最后,如果找到了该对象,就可以直接调用其方法。例如: ```java ...

    Java中对List去重 Stream去重的解决方法

    Java中提供了多种方法来实现List去重,下面我们将对其中的一些方法进行介绍。 使用HashSet去重 HashSet是一种常见的集合类型,它具有自动去重的特性。我们可以将List中的元素添加到HashSet中,然后从HashSet中...

    有趣的代码段实现去重

    基于这一特性,我们可以将需要去重的列表转换为`HashSet`,再将处理后的`HashSet`转换回列表,从而达到去重的效果。 #### 2. 代码实现 ```java // 假设有一个包含重复元素的列表 list List&lt;T&gt; list = ...; // 创建...

    集合的概念及应用和HashSet保证数据不重复的原理

    在实际应用中,HashSet常用于去重、快速查找和构建无重复元素的集合。例如,你可以用它来存储用户输入的唯一关键字,或者在处理数据库查询结果时去除重复记录。此外,HashSet也可以与其他集合类(如ArrayList和...

    OJ_电话号码去重

    这段代码首先创建了一个HashSet`uniqueNumbers`,然后通过`Scanner`对象从控制台读取电话号码。`add`方法会自动检查并移除重复的电话号码。最后,我们遍历Set并打印出所有不重复的号码。 然而,根据题目描述,这个...

    java 利用HashSet删除学生

    总的来说,Java中的HashSet是处理无序、去重数据集的有效工具。在实际编程中,我们可以根据需求,结合HashSet的特点,灵活地进行元素的增删查改操作。通过理解HashSet的工作原理和其提供的方法,能够更好地优化我们...

    合并一维字符串数组并去重 C#

    去重可以通过多种方式实现,其中最常用的是使用`HashSet`。`HashSet`是C#中的一种集合类,它不允许重复元素。我们可以通过添加所有元素到`HashSet`中,然后再转换回数组,来实现去重。例如: ```csharp HashSet...

    去掉list中的重复对象

    当处理自定义对象时,如果对象的equals()和hashCode()方法没有正确重写,HashSet可能无法正常工作。此时,我们需要根据业务逻辑定制比较规则,使用Comparator来实现去重。 ```java List&lt;MyObject&gt; list = new ...

    List 集合去重的3种方法.docx

    这里`distinctByKey()`函数是通过Lambda表达式创建的,它返回一个根据对象的`type`和`color`属性组合而成的字符串,以此作为去重的依据。 总结来说,选择哪种去重方法取决于具体的需求。对于小规模数据,简单的双重...

    排序去重工具.zip

    C#中,可以使用HashSet、Dictionary或其他数据结构来高效地实现去重。HashSet允许快速插入和查找,不存储重复元素;Dictionary则可以通过键值对的方式避免重复,但需确保键的唯一性。在处理大量数据时,利用这些数据...

    java学习笔记--第二天(list去重问题)

    1. 使用HashSet去重:HashSet是Java集合框架中的一个无序、不重复元素的集合。当我们尝试将一个列表添加到HashSet中时,由于HashSet不允许重复元素,它会自动过滤掉重复项。因此,我们可以通过以下方式去重: ```...

    Java中List根据map的某个key去重的代码

    接下来,我们使用HashSet对象来存储HashMap对象的key值,并将其转换为List对象。最后,我们返回该List对象。 在main方法中,我们测试了removeRepeatMapByKey方法,并将其应用于我们创建的List对象。结果显示,List...

    2020ZTE 傅里叶派题 参考答案.

    2. **HashSet去重**: `std::unordered_set`(或HashSet)是C++标准库中的一个容器,它提供了一种高效的方式来存储不重复元素。在处理数据规律优化时,可能需要消除重复的数据以避免影响结果,HashSet因其O(1)的平均...

Global site tag (gtag.js) - Google Analytics