java 集合框架(TreeSet操作,自动对数据进行排序,重写CompareTo方法)

简介: /*TreeSet * treeSet存入数据后自动调用元素的compareTo(Object obj) 方法,自动对数据进行排序 * 所以输出的数据是经过排序的数据 * 注:compareTo方法返回值有:负数,零,正数。

/*TreeSet
* treeSet存入数据后自动调用元素的compareTo(Object obj) 方法,自动对数据进行排序
* 所以输出的数据是经过排序的数据
* 注:compareTo方法返回值有:负数,零,正数。分别表示小于,等于,大于
* 对于存入自定义的对象元素,要重写元素的compareTo(Object obj)方法
* 元素定义时,需要实现Comparable接口
* */

 

 1 import java.util.Iterator;
 2 import java.util.TreeSet;
 3 public class StudentCode {
 4     
 5     public static void main(String []args){
 6         //定义TreeSet对象,并赋值java存在的对象
 7         TreeSet ts1=new TreeSet();
 8         ts1.add("java10");
 9         ts1.add("java01");
10         ts1.add("java08");
11         ts1.add("java04");
12         //输出对象的值,是经过排序的数据
13         System.out.println(ts1);
14         //定义TreeSet对象,并赋值自定义的对象
15         TreeSet ts2=new TreeSet();
16         ts2.add(new Person("ls",11));
17         ts2.add(new Person("zs",22));
18         ts2.add(new Person("ls",13));
19         ts2.add(new Person("ls",11));
20         //输出对象,也是经过排序的数据
21         for(Iterator it=ts2.iterator();it.hasNext();){
22             Person p=(Person)it.next();
23             System.out.println("姓名:"+p.getName()+",年龄:"+p.getAge());
24         }
25     }
26 }
27 //自定义数据,需要实现Comparable接口
28 class Person implements Comparable{
29     private String name;
30     private int age;
31     Person(String name,int age){
32         this.name=name;
33         this.age=age;
34     }
35     public String getName(){
36         return this.name;
37     }
38     public int getAge(){
39         return this.age;
40     }
41     //重写compareTo()方法,
42     public int compareTo(Object obj){
43         if(!(obj instanceof Person))
44             throw new RuntimeException("不是Person对象");
45         Person p =(Person)obj;
46         if(this.age>p.getAge()){
47             return 1;
48         }
49         else if(this.age<p.getAge()){
50             return -1;
51         }else{
52             return this.name.compareTo(p.getName());
53         }
54     }
55 }

 

 1 /*TreeSet
 2  *     treeSet当元素不具备比较性,或者比较性不是所需要的时候,
 3  *         可以使treeSet集合具有比较性。
 4  *         定义比较器,并将比较器作为参数传给TreeSet集合
 5  *         比较器需要实现Comparator接口
 6  *     当元素具备比较性和比较器同时出现时,以比较器为准。
 7  * */
 8 import java.util.Comparator;
 9 import java.util.Iterator;
10 import java.util.TreeSet;
11 public class StudentCode {
12     
13     public static void main(String []args){
14         //定义TreeSet对象,并传入比较器
15         TreeSet ts2=new TreeSet(new MyCompareble());
16         ts2.add(new Person("ls",11));
17         ts2.add(new Person("zs",22));
18         ts2.add(new Person("ls",13));
19         ts2.add(new Person("ls",11));
20         //输出对象
21         for(Iterator it=ts2.iterator();it.hasNext();){
22             Person p=(Person)it.next();
23             System.out.println("姓名:"+p.getName()+",年龄:"+p.getAge());
24         }
25     }
26 }
27 //定义比较器 — — — — 以姓名为第一顺序,年龄为第二顺序
28 class MyCompareble implements Comparator{
29     //实现比较器里面的compare方法
30     public int compare(Object o1,Object o2){
31         Person p1=(Person)o1;
32         Person p2=(Person)o2;
33         int num=p1.getName().compareTo(p2.getName());
34         if(num==0){
35             return new Integer(p1.getAge()).compareTo(new Integer(p2.getAge()));
36         }
37         return num;
38     }
39 }
40 
41 //自定义数据,需要实现Comparable接口 — — — — 以年龄为第一顺序,姓名为第二顺序
42 class Person implements Comparable{
43     private String name;
44     private int age;
45     Person(String name,int age){
46         this.name=name;
47         this.age=age;
48     }
49     public String getName(){
50         return this.name;
51     }
52     public int getAge(){
53         return this.age;
54     }
55     //重写compareTo()方法,
56     public int compareTo(Object obj){
57         if(!(obj instanceof Person))
58             throw new RuntimeException("不是Person对象");
59         Person p =(Person)obj;
60         if(this.age>p.getAge()){
61             return 1;
62         }
63         else if(this.age<p.getAge()){
64             return -1;
65         }else{
66             return this.name.compareTo(p.getName());
67         }
68     }
69 }

 

相关文章
|
5天前
|
Java 关系型数据库 MySQL
Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
【4月更文挑战第12天】Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
33 3
|
1天前
|
数据采集 前端开发 测试技术
《手把手教你》系列技巧篇(三十一)-java+ selenium自动化测试- Actions的相关操作-番外篇(详解教程)
【4月更文挑战第23天】本文介绍了网页中的滑动验证码的实现原理和自动化测试方法。作者首先提到了网站的反爬虫机制,并表示在本地创建一个没有该机制的网页,然后使用谷歌浏览器进行验证。接着,文章详细讲解了如何使用WebElement的click()方法以及Action类提供的API来模拟鼠标的各种操作,如右击、双击、悬停和拖动。
6 2
|
2天前
|
Java
Java 与垃圾回收有关的方法
Java 与垃圾回收有关的方法
|
2天前
|
Web App开发 数据采集 Java
《手把手教你》系列技巧篇(三十)-java+ selenium自动化测试- Actions的相关操作下篇(详解教程)
【4月更文挑战第22天】本文介绍了在测试过程中可能会用到的两个功能:Actions类中的拖拽操作和划取字段操作。拖拽操作包括基本讲解、项目实战、代码设计和参考代码,涉及到鼠标按住元素并将其拖动到另一个元素上或指定位置。划取字段操作则介绍了如何在一段文字中随机选取一部分,包括项目实战、代码设计和参考代码。此外,文章还提到了滑动验证的实现,并提供了相关的代码示例。
31 2
|
2天前
|
存储 Java 测试技术
一文搞清楚Java中的方法、常量、变量、参数
在JVM的运转中,承载的是数据,而数据的一种变现形式就是“量”,量分为:**常量与变量**,我们在数学和物理学中已经接触过变量的概念了,在Java中的变量就是在程序运行过程中可以改变其值的量。
14 0
|
7天前
|
存储 Java
Java动态转发代理IP的实现方法
Java动态转发代理IP的实现方法
23 11
|
8天前
|
Java
Java接口中可以定义哪些方法?
【4月更文挑战第13天】
14 0
Java接口中可以定义哪些方法?
|
Java 开发者 Windows
Java 数据类型划分(字符型)|学习笔记
快速学习 Java 数据类型划分(字符型)
100 0
|
Java 开发者
Java 数据类型划分(整型类型)|学习笔记
快速学习 Java 数据类型划分(整型类型)
|
Java 开发者
Java 数据类型划分(初见 String 类)|学习笔记
快速学习 Java 数据类型划分(初见 String 类)