Java TreeSet的使用
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的使用的更多相关文章
- Java TreeSet集合排序 && 定义一个类实现Comparator接口,覆盖compare方法 && 按照字符串长度排序
package TreeSetTest; import java.util.Iterator; import java.util.TreeSet; import javax.management.Ru ...
- java TreeSet 应用
本文主要是介绍一下java集合中的比较重要的Set接口下的可实现类TreeSet TreeSet类,底层用二叉树的数据结构 * 集合中以有序的方式插入和抽取元素. * 添加到TreeSet中的元素必须 ...
- Java TreeSet的定制排序
注:只贴出实现类 package Test3; import java.util.Comparator;import java.util.TreeSet; public class Test { pu ...
- Java - TreeSet源码解析
Java提高篇(二八)------TreeSet 与HashSet是基于HashMap实现一样,TreeSet同样是基于TreeMap实现的.在<Java提高篇(二七)-----TreeMap& ...
- java TreeSet 实现存自定义不可重复数据
本文主要是介绍一下java集合中的比较重要的Set接口下的可实现类TreeSet TreeSet类,底层用二叉树的数据结构 * 集合中以有序的方式插入和抽取元素. * 添加到TreeSet中的元素必须 ...
- 【Todo】Java TreeSet学习 & ceiling,floor
参考 http://www.yiibai.com/java/util/java_util_treeset.html 另,用Java的TreeSet的ceiling可以模拟upper_bound(获得更 ...
- java TreeSet的排序之定制排序
TreeSet的自然排序是根据元素的大小进行升序排序的,若想自己定制排序,比如降序排序,就可以使用Comparator接口了: 该接口包含int compare(Object o1,Object o2 ...
- java TreeSet的排序之自然排序
TreeSet会调用元素的compareTo(Object o)方法来比较元素之间的大小关系,然后将集合里的元素按升序排列.此时需要排序元素的类必须实现Compareble接口,并覆写其int com ...
- Java TreeSet集合 比较器排序Comparator的使用
比较器排序Comparator的使用 存储学生对象,并遍历,创建TreeSet集合使用带参构造方法 要求,按照学生年龄从小到大排序,如果年龄相同,则按照姓名的字母循序排序 结论 用TreeSet集合存 ...
- java TreeSet应用
这篇是紧接着上一篇而写的,具体的实现TreeSet中有序的第二中方法 首先新建一个类,此类就是用于集合中存放的对象 然后定义一个类,实现Comparator中的CompareTo()方法 最后一个测试 ...
随机推荐
- 如何在ArcGIS中恢复注记文字
文字标注是地图上一种特殊的视觉元素,可通过文字表达图形符号难以说明的地图内容,它与图形符号结合在一起存在于地图上,是关乎地图构图美的关键因素之一. MapGIS软件下子图对象和注释对象统统保存在点文件 ...
- RabbitMQ入门之Hello World
RabbitMQ简介 在介绍RabbitMQ之前,我们需要了解一些最基础的概念,相信使用过或者听说过RabbitMQ的人都不会陌生,但笔者还是不厌其烦地在这里讲述,因为笔者的理念是self con ...
- 使用“1”个参数调用“DownloadString”时发生异常:“操作超时”
我今天在终端美化时间遇到一个问题是这样的 使用“1”个参数调用“DownloadString”时发生异常:“操作超时” 然后网我看了下,访问链接属于https的东西,根据直觉我觉得是这样的,是由于访问 ...
- 浏览器应用集成嵌入WPS指南
因为该WPS插件使用NPAPI机制来和浏览器交互,故要求使用插件的浏览器必须支持NPAPI机制且必须开启NPAPI机制. 以下是支持的常见的浏览器及其版本: FireFox浏览器52及小于52的版本( ...
- linux 反选删除文件
一.背景 历史原因自动部署程序的历史版本没有自动删除脚本.导致服务器没有空间了.但是又不能将所有的备份都删除. 所以要求只保留一个备份版本,把其他的删除. 二. 要求 要求:删除 除了 2017110 ...
- lisp学习总结(二)-----lisp应该探索发展的方向
现在流行一种语言叫做Clojure,他是lisp直接嫁接到java的结果,但是我就感觉这却成为lisp的失败. 因为lisp最强大最有优势的能力是构造抽象,构造设计思想,而不是运行期以确定的方式运行, ...
- Java Web面试题整理(思维导图)
1,动态网站技术有哪些? 2,一般的Web架构是指BS 还是CS,BS架构是什么咚咚? 3,Web应用程序的流程,即把一个URL串输入地址栏后发生写什么? 4,说一说Servlet生命周期? 5,在W ...
- CTF--HTTP服务--SQL注入POST参数-注入HTTP报文
开门见山 1. 扫描靶机 2. 对靶机开放端口进行扫描 3. 扫描全部信息 4. 用nikto -host 探测敏感信息 5. 用dirb探测敏感目录 6. 打开一些目录探测出的网页进行查看 7. 再 ...
- Linux下的expect
expect简介 expect是一款自动化的脚本解释型的工具. expect基于tcl脚本,expect脚本的运行需要tcl的支持. expect对一些需要交互输入的命令很有帮助,比如ssh ftp ...
- 004-OSI参考模型和分层思想
OSI参考模型 应用层 所有能产生网络流量的程序 表示层 在传输之前是否进行加密或者压缩处理 涉及安全问题 会话层 Session 是建立在传输层之上,利用传输层提供的服务,使应用建立和维持会话,并能 ...