分析重复元素消除|学习笔记

简介: 快速学习 分析重复元素消除

开发者学堂课程【Java 高级编程分析重复元素消除】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/20/detail/410


分析重复元素消除


目录:

一、 简介

二、 范例:实现重复元素处理

三、 总结

 

一、 简介

TreeSet 子类是利用了 Comparable 接口来实现了重复元素的判断,但是 Set 集合的整体特征就是不允许保存重复元素。

HashSet 判断重复元素的方式并不是利用 Comparable 接口完成的,它利用的是Object 类中提供的方法实现的.

对象编码: public int hashCode(); .

对象比较: public boolean equals(Object obj);

在进行重复元素判断的时候首先利用 hashCode() 进行编码的匹配,如果该编码不存在则表示数据不存在,证明没有重复,如果该编码存在了,则进一步进行对象比较处理,如果发现重复了,则此数据是不允许保存的。如果使用的是 Eclipse 开发工具,则可以帮助开发者自动创建 hashCode() 与 equals() 方法,以此简化我们的开发。

 

二、范例:实现重复元素处理

package cn.mldn.demo;

import java.util.Set;

class Person //比较器

private String name·3

private int age;

public Person(String name,int age)f

this.name = name;

this.age = age ;

@Override

public int hashCode()

final int prime=31;

int result =1;

result=prime* result + age;

result = prime*result +((name== nul1)? e: name.hashCode())

return result;

@Override

public boolean equals(Object obj) [

if (this == obj)

return true;

if (obj == null)

if (getClass()!= obj.getClass())

return false;

Person other =(Person) obj;

if (age l= other.age)

return false;

if (name== null)

if (other.name!= null)

return false;

] else if(!name.equals(other.name))

return false;

return true;

public String toString()

return "姓名:” + this.name +"、年龄:”+ this.age

public class JavaAPIDemo

public static void main(String[] args) throws Exception

[Setall= new HashSet();//为List父接口进行实例化

all.add(new Person("张三",19));

all.add(new Person("李四",19)); //年龄相同,但是姓名不同

all.add(new Person("王五”,20)) ;//数据重复

all.add(new Person("王五”,2e));//数据重复

all.add(new Person("小强”,78));

all.forEach(System.out::println);

 

三、总结

在 Java 程序之中真正的重复元素的判断处理利用的就是 hashCode() 与 equals() 两个方法共同作用完成的,而只有在排序要求情况下 (TreeSet)  才会利用Comparable 接口来实现。

相关文章
|
4月前
|
算法 搜索推荐
数据结构和算法——表排序(算法概述、物理排序、复杂度分析,包含详细清晰图示过程)
数据结构和算法——表排序(算法概述、物理排序、复杂度分析,包含详细清晰图示过程)
29 0
|
5月前
|
存储 搜索推荐 算法
Java数组全套深入探究——进阶知识阶段3、sort自然排序
Java数组全套深入探究——进阶知识阶段3、sort自然排序
43 0
|
5月前
|
算法 搜索推荐
算法基础——算法排序(一)
算法基础——算法排序(一)
49 0
|
11月前
|
容器
List特点和遍历方式及增长因子论证和去重原理和LinkedList特点
List特点和遍历方式及增长因子论证和去重原理和LinkedList特点
34 0
数组双重去重的方式一循环法去重笔记
数组双重去重的方式一循环法去重笔记
60 0
|
JavaScript
数组双重去重的方式四先排序在对比
数组双重去重的方式四先排序在对比
44 0
|
算法
组合排序回溯编程题集合(leetcode)
组合排序回溯编程题集合(leetcode)
|
存储
集合的操作(交并差)
集合的操作(交并差)
72 0
|
存储 算法 Java
【算法】1470. 重新排列数组,细节满满一道题
【算法】1470. 重新排列数组,细节满满一道题
90 0
【算法】1470. 重新排列数组,细节满满一道题
|
缓存 算法 搜索推荐
算法设计与分析 排序
算法设计与分析 排序
94 0
算法设计与分析 排序