package com.wsq.set;        //这里进行调用Person()方法,要进行导包
import java.util.TreeSet;
import com.wsq.bean.Person;
public class Demo3_TreeSet {/*** TreeSet集合是用来对元素进行排序的,同样它也可以保证元素的唯一* 当compareTo()方法返回0的时候,只有一个元素* 当compareTo()方法返回正数的时候,怎么存,就怎么取* 当compareTo()方法返回负数的时候,集合会倒序存储* */public static void main(String[] args) {
//      demo1();
//      demo2();
//      demo3();
//      demo4();  }private static void demo4() {TreeSet<Person> yy = new TreeSet<>();yy.add(new Person("zhangshan",23));yy.add(new Person("lisi",13));yy.add(new Person("wangwu",33));yy.add(new Person("zhaoliu",43));yy.add(new Person("aaaa",53));System.out.println(yy);
}private static void demo3() {TreeSet<Person> wsq = new TreeSet<>();wsq.add(new Person("李四",13));wsq.add(new Person("张三",23));wsq.add(new Person("王五",43));wsq.add(new Person("赵六",33));System.out.println('张' + 0);System.out.println('李' + 0);System.out.println('王' + 0);System.out.println('赵' + 0);System.out.println(wsq);
}private static void demo2() {TreeSet<Person> wsq = new TreeSet<>();/*** TreeSet底层是一个二叉树:两个叉,小的存储在左边(返回负数),大的存储在右边(返回正数),相等就不存(返回0);* CompareTo()方法,在TreeSet集合如何存储元素,取决于CompareTo()方法的返回值* * 1,第一次返回0,集合中只有一个元素* 2,第二次返回-1(负数),集合会将存储的元素倒序* 3,第三次返回1(正数),集合会怎么存。怎么取*  */wsq.add(new Person("张三",23));wsq.add(new Person("李四",13));wsq.add(new Person("周七",13));wsq.add(new Person("王五",43));wsq.add(new Person("赵六",33));System.out.println(wsq);
}private static void demo1() {                       // TreeSet集合是用来对元素进行排序的,同样它也可以保证元素的唯一,即系统会自动按顺序排序TreeSet<Integer> yy = new TreeSet<>();yy.add(3);yy.add(1);yy.add(1);yy.add(2);yy.add(2);yy.add(3);yy.add(3);System.out.println(yy);
}}
package com.wsq.bean;public class Person implements Comparable<Person>{//实现接口之后,要重写Comparable里面的CompareTo(Person o)这个抽象方法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;}@Overridepublic String toString() {return "Person [name=" + name + ", age=" + age + "]";}@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;Person other = (Person) obj;if (age != other.age)return false;if (name == null) {if (other.name != null)return false;} else if (!name.equals(other.name))return false;return true;}@Overridepublic int hashCode() {final int prime = 31;int result = 1;result = prime * result + age;result = prime * result + ((name == null) ? 0 : name.hashCode());return result;}/*public int compareTo(Person o) {          //当CompareTo()方法返回0的时候,集合中只有一个元素return 0;}*//*public int compareTo(Person o) {          //当CompareTo()方法返回正数的时候,集合怎么存,就怎么取return 1;}*//*public int compareTo(Person o) {          //当CompareTo()方法返回负数的时候,集合会倒序存储return -1;}*//*public int compareTo(Person o) {return this.age - o.age;                           //年龄是比较的唯一条件,若年龄相同但姓名不同,那么只会存储第一个年龄的人的信息}*//*public int compareTo(Person o) {int num= this.age - o.age;                                      //年龄比较的是主要条件return num == 0 ? this.name.compareTo(o.name) : num;            //姓名是比较的次要条件    }*//*@Overridepublic int compareTo(Person o) {        //按照姓名在字典中的次序排序int  num = this.name.compareTo(o.name);     //姓名是主要条件   return num ==0 ? this.age - o.age : num;    //年龄是次要条件}*/public int compareTo(Person o){int length = this.name.length() - o.name.length();              //比较姓名长度为主要条件int num = length == 0 ? this.name.compareTo(o.name) : length;   //比较姓名内容为次要条件return num == 0 ? this.age - o.age : num;                       //比较年龄也为次要条件     }
}

Java——集合(TreeSet)相关推荐

  1. Java集合TreeSet

    TreeSet Set接口的一个实现类 内部采用自平衡的排序二叉树,来存储元素 这样,可以保证集合中没有重复元素 并且,可以对元素进行排序 package bhz.aio;import java.ut ...

  2. java treeset原理_Java集合 --- TreeSet底层实现和原理(源码解析)

    概述 文章的内容基于JDK1.7进行分析,之所以选用这个版本,是因为1.8的有些类做了改动,增加了阅读的难度,虽然是1.7,但是对于1.8做了重大改动的内容,文章也会进行说明. TreeSet实现了S ...

  3. 三十九、Java集合中的HashSet和TreeSet

    @Author:Runsen @Date:2020/6/6 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘课严重,专业排名 ...

  4. java集合——树集(TreeSet)+对象的比较

    [0]README 0.1) 本文描述转自 core java volume 1, 源代码为原创,旨在理解 java集合--树集(TreeSet)+对象的比较 的相关知识: 0.2) for full ...

  5. Java集合(5)--Set接口及其实现类HashSet、LinkedHashSet和TreeSet

    文章目录 Set接口概述 HashSet实现类 LinkedHashSet实现类 TreeSet实现类 Set接口概述 1.Set接口是Collection的子接口,set接口没有定义额外的方法,使用 ...

  6. java基础—自定义一个比较器,对TreeSet 集合中的元素按指定方法来排序(java集合六)

    自定义一个比较器,对TreeSet 集合中的元素按指定方法来排序 import java.util.Comparator; import java.util.Iterator; import java ...

  7. java基础—TreeSet集合中储存自定义对象(java集合二)

    TreeSet集合中储存学生对象,按照其年龄进行排序 TreeSet对元素进行排序的方式一: 让元素自身具备比较功能,元素就需要实现Comparable接口,覆盖compareTo方法. TreeSe ...

  8. Java 集合HashSet TreeSet HashMap ArrayList TreeList

    1.体系结构 2.工具类: package collection;public class InnerTest {private int age;public final int getAge() { ...

  9. Java 集合之TreeSet 自定义类 比较器

    Java 集合之TreeSet 基于 TreeMap 的 NavigableSet 实现. 使用元素的自然顺序进行排序,或者通过在集合创建时提供的 Comparator 进行排序,具体取决于使用的构造 ...

最新文章

  1. Known Notation 39届亚洲赛牡丹江站K题
  2. Ubuntu 16.04 64位安装arm-linux-gcc交叉编译器以及samba服务器
  3. makefile中的零星知识点
  4. Linux 系统应用编程——文件I/O
  5. Win10下OpenCV3.2.0+VS2015配置
  6. 雷霄骅--H264视频编解码分析--目录转载
  7. 如果你是壁纸控,高清图片这里找!
  8. java ftp取远程服务器时间_在 Java 中如何获取 FTP 服务器上的文件修改时间
  9. 10个最佳的网站和App开发工具
  10. ajax提交sql注入,Godontologico '/index_ajax.php' SQL注入漏洞
  11. LaTeX 有哪些「新手须知」的内容?
  12. 基于STM32的超声波传感器测距(含代码)
  13. c语言char储存字符串,在c语言中char型数据在内存中的储存形式为什么
  14. html5_滑条等其他标签
  15. 黑洞(black hole)
  16. 浏览器无法渲染php,解决lighttpd运行后浏览器无法渲染html
  17. 讲真,这份新年豪礼【面试锦囊】真舍不得给你们
  18. 极客战记[森林]CHALLENGE:MAGIC EXAM
  19. 如何使Maltab中用randi函数生成的随机数变成固定数
  20. 纳税服务系统七(投诉管理模块)【显示投诉信息、处理回复、我要投诉、Quartz自动受理、统计图FusionCharts】...

热门文章

  1. 二级计算机excel以宏保存,Excel宏保存
  2. js中var、let、const区别
  3. 解决微信小程序的wx-charts插件tab切换时的显示会出现位置移动问题-tab切换时,图表显示错乱-实现滑动tab
  4. 小程序canvasu真机上数据图片不能使用
  5. 《软件需求十步走》阅读笔记06
  6. (转)利用WPF的ListView进行大数据量异步加载
  7. 在Windows上安装Elasticsearch 5.0
  8. node.js 初体验
  9. 使用ACE_SOCK_SEQPACK_Association获取socket连接的本地及远程IP端口信息
  10. [转]JAVA AES 加密算法