博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TreeSet
阅读量:5239 次
发布时间:2019-06-14

本文共 2325 字,大约阅读时间需要 7 分钟。

/*Set:无序,不可重复HashSet:数据结构式哈希表,线程非同步。保证元素唯一性的原理,判断hashCode是否相同,如果相同,判断元素的equals方法。TreeSet:可以对集合中的元素进行排序,底层数据结构是二叉树,保证元素唯一性的依据:compareTo方法的return 0.TreeSet的排序方法:1、方法一:让元素自身具有比较性。元素需要实现Comparable接口,重写compareTo方法,这种方式也是元素的自然顺序,叫做默认排序2、方法二:当元素不具备比较性,或者具备的比较性不是需要的,这时,要让集合自身具有比较性。在集合初始化时就具有比较性。在TreeSet初始化时,			定义了比较器,将比较器对象作为参数传递给TreeSet集合的构造函数。	当两种排序都存在时,以比较器为主	步骤:	定义一个类,实现Comparator接口,重写compare方法,以return 0判断是否相同。	ClassCastException - 如果参数的类型不允许此 Comparator 对它们进行比较。*/import java.util.*;class  TreeSetDemo{	public static void main(String[] args) 	{		System.out.println("实现Comparable");		TreeSet ts = new TreeSet();		ts.add(new Student("java1",106));		ts.add(new Student("java2",102));		ts.add(new Student("java3",103));		ts.add(new Student("java4",104));		Iterator it = ts.iterator();		while(it.hasNext())		{			Student stu = (Student)it.next();			System.out.println(stu.getName() + "..." + stu.getAge());		}		System.out.println("实现Comparator");		TreeSet ts1 = new TreeSet(new Person());		ts1.add(new Person("java1",106));		ts1.add(new Person("java2",102));		ts1.add(new Person("java3",103));		ts1.add(new Person("java4",104));		Iterator it1 = ts1.iterator();		while(it1.hasNext())		{			Person per = (Person)it1.next();			System.out.println(per.getName() + "..." + per.getAge());		}	}}class Student implements Comparable{	private String name;	private int age;	Student(String name,int age)	{		this.name = name;		this.age = age;	}	public String getName()	{		return this.name;	}	public int getAge()	{		return this.age;	}		public int compareTo(Object obj1)				//当主要条件相同时,进行次要条件判断,如果只有一个条件,那么相同就是两个对象相同,添加不成功													//导致添加不成功	{		if(!(obj1 instanceof Student))			return -1;		Student stu1 = (Student)obj1;		if(stu1.age < this.age)		{			return -1;		}		if(this.age == stu1.age)			return 0;		return 1;	}}class Person implements Comparator				//根据第一个参数小于、等于或大于第二个参数分别返回负整数、零或正整数。{	private String name;	private int age;	Person()	{	}	Person(String name,int age)	{		this.name = name;		this.age = age;	}	public String getName()	{		return this.name;	}	public int getAge()	{		return this.age;	}		public int compare(Object obj1,Object obj2)	{		Person p1 =(Person)obj1;		Person p2 =(Person)obj2;		if(p2.age > p1.age)		{			return 1;		}		if(p2.age == p1.age)		{			return 0;		}		return -1;	}}

转载于:https://www.cnblogs.com/dengshiwei/p/4258500.html

你可能感兴趣的文章
:after,:before,content
查看>>
FTTB FTTC FTTH FTTO FSA
查看>>
OpenAI Gym
查看>>
stap-prep 需要安装那些内核符号
查看>>
网易杭研后台技术中心的博客 -MYSQL :OOM
查看>>
第二章 数据通信的基础知识 计算机网络笔记 学堂在线 2.1 数据传输系统 2.2 信号...
查看>>
如何解决click事件的重复触发问题
查看>>
2016寒假自学笔记
查看>>
VC++2012编程演练数据结构《21》二叉排序树
查看>>
vi/vim 基本使用方法(转)
查看>>
Jzoj4384 Hashit
查看>>
nginx Dockerfile
查看>>
flex布局
查看>>
[转]IE6/IE7/IE8/IE9中tbody的innerHTML不能赋值的完美解决方案
查看>>
MVC & Entity Framework(1)- 开发环境
查看>>
OpenCL 学习step by step (5) 使用二维NDRange workgroup
查看>>
机器学习之决策树学习
查看>>
如何将一个长字符串分割成等分的几段(二)
查看>>
数据类型
查看>>
mark一下。hadoop分布式系统搭建
查看>>