Java_基础—TreeSet保证元素唯一和自然排序
来源:互联网 发布:淘宝欣欣潮流店 编辑:程序博客网 时间:2024/04/19 23:59
TreeSet存储自定义对象时,必须使该对象实现Comparable接口,并重写该方法。
public class Person implements Comparable<Person>{@Override public int compareTo(Person o) { //return 0; //返回0,集合中只有一个元素 return 1; //返回1,集合怎么存就怎么取 //return -1; //返回-1,集合会将存储的元素倒叙 }}
二叉树:小的存储在左边(负数),大的存储在右边(正数),相等就不存(0)
compareTo方法,在TreeSet集合如何存储元素取决于 compareTo方法的返回值
- 返回0,集合中只有一个元素
- 返回-1,集合会将存储的元素倒叙
- 返回1,集合怎么存就怎么取
自定义一个Person类,属性为name, age
package com.soar.bean;public class Person implements Comparable<Person>{ private String name; private int age; public Person() { super(); } public Person(String name, int age) { super(); this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String toString() { return "Person [name=" + name + ", age=" + age + "]"; } //Alt + Shift + S → Generate hashCode() and equals()方法 /* * final int prime = 31; * 为什么是31? * ①31是个质数,质数是能被1和自己本身整除的数 * ②31这个数既不大也不小 * ③31这个数好算,2的五次方-1,2向左移动5位 */ @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + age; result = prime * result + ((name == null) ? 0 : name.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) //调用的对象和传入的对象是同一个对象 return true; //直接返回true if (obj == null) //传入的对象为null return false; //返回false if (getClass() != obj.getClass()) //判断两个对象对应的字节码文件是否是同一个 return false; //如果不是,直接返回false Person other = (Person) obj; //向下转型 if (age != other.age) //调用对象的年龄不等于传入对象的年龄 return false; //返回false if (name == null) { //调用对象的姓名为null if (other.name != null) //传入对象的姓名不为null return false; //返回flase } else if (!name.equals(other.name)) //调用的姓名不等于传入对象的姓名 return false; //返回false return true; //返回true } @Override public int compareTo(Person o) { int num = this.age - o.age; //年龄是比较的主要条件 return num == 0 ? this.name.compareTo(o.name) : num; //姓名是比较的次要条件 }}
定义一个TreeSet类
package com.soar.set;import java.util.TreeSet;import com.soar.bean.Person;public class Demo3_TreeSet { /* *A:案例演示 * TreeSet存储Integer类型的元素并遍历 * TreeSet集合是用来对元素进行排序的,同样他也可以保证元素的唯一 * 当compareTo方法返回0的时候,集合中只有一个一个元素 * 当compareTo方法返回正数的时候,集合会怎么存就怎么取 * 当compareTo方法返回负数的时候,集合会倒序存储 */ public static void main(String[] args) { //add(); TreeSet<Person> ts = new TreeSet<>(); ts.add(new Person("张三",23)); ts.add(new Person("李四",24)); ts.add(new Person("王五",25)); ts.add(new Person("赵六",26)); ts.add(new Person("周七",26)); System.out.println(ts); } private static void add() { TreeSet<Integer> ts = new TreeSet<>(); ts.add(1); ts.add(2); ts.add(2); ts.add(3); ts.add(3); System.out.println(ts); }}
阅读全文
0 0
- Java_基础—TreeSet保证元素唯一和自然排序
- 集合框架-TreeSet保证元素唯一性和自然排序的原理和图解
- TreeSet存储元素自然排序和唯一的图解
- TreeSet保证元素的 排序和唯一性 的原理
- TreeSet保证元素唯一性
- TreeSet保证元素唯一并实现排序的原理
- Treeset保证元素唯一且排序的代码示例
- TreeSet保证元素唯一并实现排序的原理
- Java_基础—HashSet存储自定义对象保证元素唯一性
- TreeSet存储自定义对象并保证排序和唯一
- 集合框架_TreeSet保证元素唯一性和自然排序的原理和图解(二叉树结构)
- TreeSet保证元素唯一性原理图解
- 黑马程序员——集合的特殊功能之TreeSet集合如何保证元素的唯一及排序的
- 集合的特殊功能之TreeSet集合如何保证元素的唯一及排序的
- TreeSet的自然排序和定制排序
- 《java入门第一季》之TreeSet存储自定义对象并保证排序和唯一
- TreeSet自然排序
- TreeSet------自然排序
- ng2 碎片1
- poj 1679 最小生成树唯一性判断(KRUSKAL)
- android之事件处理(一) dispatchTouchEven onInterceptTouchEvent onTouchEvent
- CSS基础知识
- assert()函数用法总结
- Java_基础—TreeSet保证元素唯一和自然排序
- C# 创建通用增删改查代码
- Maven环境变量配置
- QML之TextInput
- jzoj 模拟赛总结(2017.07.15)
- bzoj 2821 作诗 分块
- hdu 5823(壮压dp)
- 【响应式Web设计】读书笔记
- 常用的正则表达式(一)