当前位置: 首页 > news >正文

TreeSet排序和HashSet去重

为什么80%的码农都做不了架构师?>>>   hot3.png

TreeSet依靠Comparable完成排序:
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 依靠覆写equals和hashCode方法完成去重:
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) ;
	}
};
  参考: [1].mldn视频  

转载于:https://my.oschina.net/itfanr/blog/358380

相关文章:

  • Cocos2d-x编程中的runOnUiThread方法和runOnGLThread方法剖析
  • DML数据操作语言之常用函数
  • Oracle Dedicated server 和 Shared server(专用模式 和 共享模式) 说明(转)
  • 修改mysql的编码
  • (轉)JSON.stringify 语法实例讲解
  • FTP笔记
  • web应用程序使用jdbc连接rac数据库失败
  • 2761: [JLOI2011]不重复数字(哈希表)
  • 上市之后:曙光服务器“新规”
  • Fragment介绍(一)
  • (转)视频码率,帧率和分辨率的联系与区别
  • LVS-DR负载均衡模式的arp_announce和arp_ignore详解
  • 轻量级web富文本框——wangEditor使用手册(2)——扩展一个“缩进”功能 demo
  • nginx相关参考博客
  • Spring MVC中jquery ajax传递view
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • Akka系列(七):Actor持久化之Akka persistence
  • Angularjs之国际化
  • Python连接Oracle
  • Solarized Scheme
  • Spring Cloud Feign的两种使用姿势
  • spring cloud gateway 源码解析(4)跨域问题处理
  • windows-nginx-https-本地配置
  • 浮现式设计
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 警报:线上事故之CountDownLatch的威力
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 前端技术周刊 2019-01-14:客户端存储
  • 区块链将重新定义世界
  • 事件委托的小应用
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 交换综合实验一
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • #if 1...#endif
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (pojstep1.3.1)1017(构造法模拟)
  • (笔试题)合法字符串
  • (差分)胡桃爱原石
  • (超详细)语音信号处理之特征提取
  • (二)WCF的Binding模型
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (接口自动化)Python3操作MySQL数据库
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (原)Matlab的svmtrain和svmclassify
  • (原創) 未来三学期想要修的课 (日記)
  • (转)jdk与jre的区别
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • .equals()到底是什么意思?
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .net 中viewstate的原理和使用
  • .NET 中让 Task 支持带超时的异步等待
  • .vue文件怎么使用_vue调试工具vue-devtools的安装
  • /proc/stat文件详解(翻译)