集合-TreeSet-Comparable

Student类:name、age属性 1 package com.bjpowernode.test01_set2_Comparable;
 2 /*
 3  * T: type
 4  */
 5 public class Student implements Comparable<Student> {
 6     private String name;
 7     private int age;
 8     public String getName() {
 9         return name;
10     }
11     public void setName(String name) {
12         this.name = name;
13     }
14     public int getAge() {
15         return age;
16     }
17     public void setAge(int age) {
18         this.age = age;
19     }
20     public Student(String name, int age) {
21         super();
22         this.name = name;
23         this.age = age;
24     }
25     public Student() {
26         super();
27         // TODO Auto-generated constructor stub
28     }
29     /*@Override
30     public int hashCode() {
31         final int prime = 31;
32         int result = 1;
33         result = prime * result + age;
34         result = prime * result + ((name == null) ? 0 : name.hashCode());
35         return result;
36     }
37     @Override
38     public boolean equals(Object obj) {
39         if (this == obj)
40             return true;
41         if (obj == null)
42             return false;
43         if (getClass() != obj.getClass())//判断两个“对象”的类型是否相同。
44             return false;
45         Student other = (Student) obj; //向下转型
46         if (age != other.age)
47             return false;
48         if (name == null) {  //避免出现NullPointerException异常
49             if (other.name != null)
50                 return false;
51         } else if (!name.equals(other.name))
52             return false;
53         return true;
54     }*/
55     /*
56      * 当前对象与参数对象相同时返回 : 0
57      * 当前对象 大于参数对象 时: 1  正数
58      *  当前对象 小于参数对象 时: -1 负数
59      */
60     @Override
61     public int compareTo(Student s) {
62         //按年龄排序,如果年龄相同,按姓名排序
63         if(this.age == s.age){
64             //按姓名排序, 调用字符串的compareTo
65             return this.name.compareTo(s.name);
66         }
67         return this.age -s.age;
68     }
69
70 }
 TreeSet存储,遍历,排序输出 1 package com.bjpowernode.test01_set2_Comparable;
 2
 3 import java.util.TreeSet;
 4 /*
 5  * TreeSet中存放元素,默认按自然排序的方式去除重复项,并进行排序的
 6  * String和8种包装类中都指定自然排序方法:实现java.lang.Comparable接口,重写compareTo方法
 7  * 自定义的类放入TreeSet时,也实现实现java.lang.Comparable接口,重写compareTo方法
 8  */
 9 public class StudentTreeSetTest {
10     public static void main(String[] args) {
11         TreeSet<Student> tree = new TreeSet<>();
12         Student s = new Student("Mike", 18);
13         Student s1 = new Student("Join", 28);
14         Student s3 = new Student("Join", 18);
15         Student s4 = new Student("Smith", 18);
16         tree.add(s);
17         tree.add(s1);
18         tree.add(s3);
19         tree.add(s4);
20         System.out.println(tree.size());
21         System.out.println("姓名\t年龄");
22         for (Student stu : tree) {
23             System.out.println(stu.getName()+"\t"+stu.getAge());
24         }
25     }
26 }
时间: 2024-11-09 06:24:33

集合-TreeSet-Comparable的相关文章

java集合中Comparable和Comparator辨析

一.Comparable和Comparator简介 在对集合元素进行比较时一般使用TreeSet.对于简单的数据类型,TreeSet可以直接进行比较.但是对于复杂的数据类型,比如自己定义的数据类型或者类,就需要自己设置比较方法与比较规则了,这时就需要使用Comparable和Comparator. Comparable和Comparator都是用来实现集合中的排序的,只是Comparable是在集合内图定义的方法实现排序,而Comparator是在集合外部实现的排序.所以如果想对结合排序,需要在

Java——(四)Collection之Set集合TreeSet类

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- TreeSet类 TreeSet是SortedSet接口的实现类,正如SortedSet名字所暗示的,TreeSet可以确保集合 元素处于排序状态.与HashSet集合相比,TreeSet还提供了如下几个额外的方法. 1)Comparator comparator(): 2)Object first(): 3)Object last(): 4)Object lower(Object o): 5

java毕向东听课笔记25(集合框架-Set集合TreeSet)

TreeSet:可以对Set集合中的元素进行排序. 例:存放自定义对象 import java.util.*; /* 需求:往TreeSet集合中存储自定义对象--学生 想按照学生的年龄进行排序 */ class Student{ private String name; private int age; Student(String name,int age){ this.name = name; this.age = age; } public String getName(){ retur

集合TreeSet(自然排序与定制排序)

一.TreeSet的自然排序: 步骤:让元素自身具备比较性, 实现Compareable接口,覆盖其CompareTo方法 class Student implements Comparable//第一:实现Compareable接口 { private String name; private int age; Student(String name,int age) { this.name = name; this.age = age; } public int compareTo(Obje

Java集合--TreeSet详细解析

目录 1.构造函数 2.增 3.删 4.比较器 总结 谈到TreeSet的特点,估计大家脑海里想到的都是:有序,不可重复,红黑树,基于Treemap实现,自定义排序等特点.这篇博客帮助大家从源码梳理下TreeSet的知识点. 1.构造函数 TreeSet提供了四种构造器 TreeSet() TreeSet(Collection< ? extends E> c) TreeSet(Comparator< ? super E> comparator) TreeSet(SortedSet&

java基础33 Set集合下的HashSet集合和TreeSet集合

集合的体系: ---------| collection  单例集合的根接口--------------| List  如果实现了list接口的集合类,具备的特点:有序,可重复       注:集合中的有序不是指自然顺序,而是指添加进去的顺序与出来的顺序是一致的------------------| ArrayList  ArrayList底层维护了一个object数组的实现的.(线程不安全),特点:查询速度快,增删速度慢.(有序,可重复)------------------| LinkedLi

java集合排序问题

List: 元素是有序的,元素可以重复,因为该集合体系有索引(脚标) 常用的子类对象: 1----ArrayList 底层的数据结构是使用的数组结构特点:查询速度快,但是增删比较慢 2----LinkedList底层的数据结构使用的是链表结构特点:增删速度快,但是查询比较慢 Vector 底层是数组数据结构. 线程同步,ArrayList线程不同步,替代了vector ArrayList 是可变长度数组,默认长度是10,当添加的元素大于10时,系统自动new一个新的数组且增长原数组的一半长度,并

集合API

Java集合框架 集合的概念 集合,也称为容器,是一种工具类,它可以将一系列具有共同特性的元素组合成一个单元,用于存储,提取,管理.JDK提供的集合API都包含在java.util包内. Java集合框架主要分为两大部分,一部分实现了collection接口,该接口定义了存取一组对象的方法,其主要子接口为:Set和List,另外一部分是Mapjko,该接口定义了存储一组"键(key)值(value)"映射对的方法. 集合框架体系结构 开发过程中由于需求的不同,Java集合提供了不同的集

TreeMap与TreeSet的实现

虽然TreeMap 是 Map 接口的常用实现类,而 TreeSet 是 Set 接口的常用实现类,但TreeSet底层是通过 TreeMap来实现的,因此二者的实现方式完全一样.而 TreeMap 的实现就是红黑树算法. 一.TreeSet 和 TreeMap 的关系 为了让大家了解 TreeMap 和 TreeSet 之间的关系,下面先看 TreeSet 类的部分源代码: public class TreeSet<E> extends AbstractSet<E> implem

黑马程序员——JAVA学习笔记八(集合)

1,    JAVA最初版本只为最常用的数据结构提供了很少的一组类:Vector.Stack.Hashtable.BitSet与Enumeration接口,从JAVA1.2版本开始推出了一组功能完善的的数据结构. 集合类的由来:  对象用于封装特有数据,对象多了需要存储,如果对象的个数不确定.  就使用集合容器进行存储. 集合特点: 1,用于存储对象的容器. 2,集合的长度是可变的. 3,集合中不可以存储基本数据类型值. 4,接口与实现相互分离. 集合框架是为表示和操作集合而规定的一种统一的标准