1、TreeSe自带排序的set,没有重复元素。

2、TreeSet 如果构造函数中没有使用比较器,那在装载的对象类中要实现Comparable 接口。

3、TreeSet 使用初始化比较器的方式。

试例代码:

public class Demo {

public static void main(String[] args) {

//1、TreeSe自带排序的set,没有重复元素

TreeSet<String> setStr=new TreeSet<String>();

setStr.add("E");

setStr.add("D");

setStr.add("C");

setStr.add("A");

setStr.add("B");

setStr.add("B");

System.out.println(setStr.toString());

System.out.println("-------------遍历方式:1、使用迭代器遍历------------");

Iterator<String> ite = setStr.iterator();

while(ite.hasNext()) {

System.out.println(ite.next());

}

System.out.println("-------------遍历方式:2、使用数组遍历------------");

Object[] objs = setStr.toArray();

for(int i=0;i<objs.length;i++) {

System.out.println(objs[i]);

}

//2、TreeSet 如果构造函数中没有使用比较器,那在装载的对象类中要实现Comparable 接口

System.out.println("-------------TreeSet 如果构造函数中没有使用比较器,那在装载的对象类中要实现Comparable 接口------------");

TreeSet<person> setPerson=new TreeSet<person>();

setPerson.add(new person("张三",20));

setPerson.add(new person("李四",19));

setPerson.add(new person("王五",32));

System.out.println(setPerson.toString());

//3、TreeSet 使用初始化比较器的方式

System.out.println("-------------TreeSet在初始化时使用构造器------------");

TreeSet<book> set=new TreeSet<book>(new BookComparator());

set.add(new book("流浪地球",100));

set.add(new book("三体",90));

set.add(new book("大秦帝国",110));

System.out.println(set.toString());

System.out.println("-------------遍历方式:1、使用迭代器遍历------------");

Iterator<book> iteBook = set.iterator();

while(iteBook.hasNext()) {

System.out.println(iteBook.next());

}

System.out.println("-------------遍历方式:2、使用数组遍历------------");

Object[] objsBook = set.toArray();

for(int i=0;i<objsBook.length;i++) {

System.out.println(objsBook[i]);

}

System.out.println("-------------遍历方式:3、使用foreach方式------------");
  for(book b :set) {
   System.out.println(b);
  }

} }

class person implements Comparable<person>{

String name;  int age;

person(String name,int age){

this.name=name;   this.age=age;

}

@Override

public String toString() {

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

}

@Override

public int compareTo(person o) {

if(o.age>this.age) {

return 1;

} else if(o.age<this.age) {

return -1;

}

return 0;

} }

class book {

String name;  double price;

book(String name,double price){

this.name=name;   this.price=price;

}

@Override

public String toString() {

return "书名:"+this.name+" 价格:"+this.price;

}  }

class BookComparator implements Comparator<book>{

@Override

public int compare(book o1, book o2) {

if(o1.price>o2.price) {

return 1;

} else if(o1.price < o2.price){

return -1;

}   return 0;

}

}

Java TreeSet的使用的更多相关文章

  1. Java TreeSet集合排序 && 定义一个类实现Comparator接口,覆盖compare方法 && 按照字符串长度排序

    package TreeSetTest; import java.util.Iterator; import java.util.TreeSet; import javax.management.Ru ...

  2. java TreeSet 应用

    本文主要是介绍一下java集合中的比较重要的Set接口下的可实现类TreeSet TreeSet类,底层用二叉树的数据结构 * 集合中以有序的方式插入和抽取元素. * 添加到TreeSet中的元素必须 ...

  3. Java TreeSet的定制排序

    注:只贴出实现类 package Test3; import java.util.Comparator;import java.util.TreeSet; public class Test { pu ...

  4. Java - TreeSet源码解析

    Java提高篇(二八)------TreeSet 与HashSet是基于HashMap实现一样,TreeSet同样是基于TreeMap实现的.在<Java提高篇(二七)-----TreeMap& ...

  5. java TreeSet 实现存自定义不可重复数据

    本文主要是介绍一下java集合中的比较重要的Set接口下的可实现类TreeSet TreeSet类,底层用二叉树的数据结构 * 集合中以有序的方式插入和抽取元素. * 添加到TreeSet中的元素必须 ...

  6. 【Todo】Java TreeSet学习 & ceiling,floor

    参考 http://www.yiibai.com/java/util/java_util_treeset.html 另,用Java的TreeSet的ceiling可以模拟upper_bound(获得更 ...

  7. java TreeSet的排序之定制排序

    TreeSet的自然排序是根据元素的大小进行升序排序的,若想自己定制排序,比如降序排序,就可以使用Comparator接口了: 该接口包含int compare(Object o1,Object o2 ...

  8. java TreeSet的排序之自然排序

    TreeSet会调用元素的compareTo(Object o)方法来比较元素之间的大小关系,然后将集合里的元素按升序排列.此时需要排序元素的类必须实现Compareble接口,并覆写其int com ...

  9. Java TreeSet集合 比较器排序Comparator的使用

    比较器排序Comparator的使用 存储学生对象,并遍历,创建TreeSet集合使用带参构造方法 要求,按照学生年龄从小到大排序,如果年龄相同,则按照姓名的字母循序排序 结论 用TreeSet集合存 ...

  10. java TreeSet应用

    这篇是紧接着上一篇而写的,具体的实现TreeSet中有序的第二中方法 首先新建一个类,此类就是用于集合中存放的对象 然后定义一个类,实现Comparator中的CompareTo()方法 最后一个测试 ...

随机推荐

  1. 有哪些让人相见恨晚的Python库(一)

    对于我这个经常用python倒腾数据的人来说,下面这个库是真·相见恨晚 记得有一次我在服务器上处理数据时,为了解决Pandas读取超过2000W条数据就内存爆炸的问题,整整用了两天时间来优化.最后通过 ...

  2. APICloud开发者进阶之路 |audioRecorder录音模块Demo

    本文出自APICloud官方论坛   audioRecorder 模块通过封装系统的录音接口,能够快速的为开发者提供一个完整的录音功能. 该模块提供Android和iOS版本,录音方式及录制的音频格式 ...

  3. Nginx代理服务——常用的配置语法

    可以到官方查看所有代理的配置语法http://nginx.org/en/docs/http/ngx_http_proxy_module.html 缓存区 Syntax:proxy_buffering ...

  4. Activiti 启动事件(Start Event)

    Activiti 启动事件(Start Event) 作者:Jesai 生活里,没有容易二字,忧伤是一种本能,而微笑是一种能力 版权所有,未经允许,禁止引用.如需引用,请注明出处. 前言: 启动事件是 ...

  5. 在python中使用redis 初识

    一.下载redis模块 pip3 install -i https://pypi.douban.com/simple redis 二.创建单连接 import redis # 创建链接 conn = ...

  6. 如何构建可伸缩的Web应用?

    为什么要构建可伸缩的Web应用? 想象一下,你的营销活动吸引了很多用户,在某个时候,应用必须同时为成千上万的用户提供服务,这么大的并发量,服务器的负载会很大,如果设计不当,系统将无法处理. 接下来发生 ...

  7. 遗传编程GP-地图路径寻路

    本文介绍的是基于GP,并非A*算法,算是另类实现吧. 先看看地图定义,在文本文件中定义如下字符串,代表30列11行大小的地图 初始位置在左上角(0,0) ,值为1的是允许走的通的路,目标位置为右下角( ...

  8. OpenCV2.4.13+VS2013配置方法

    先说一下vc几代表的对应版本: vc8 = Visual Studio 2005 vc9 = Visual Studio 2008 vc10 = Visual Studio 2010 vc11 = V ...

  9. 必须掌握的50条Linux基础操作命令

    说明: 根据笔者平时使用情况,并结合参考一些其他资料,精心整理出以下必须掌握的50条Linux基础命令. 命令: 1. ssh 登录到远程主机 $ ssh -l jsmith remotehost.e ...

  10. 使用Gradle构建springboot多模块项目,并混合groovy开发

    idea设置本地gradle 打包: build.gradle //声明gradle脚本自身需要使用的资源,优先执行 buildscript { ext { springBootVersion = ' ...