`

java TreeSet的使用

阅读更多

/*
 
TreeSet:它可以给Set集合中的元素进行指定方式的排序。
        保证元素唯一性的方式:通过比较的结果是否为0.
        底层数据结构是:二叉树。
*/
 
 

import java.util.*;
 
 
class TreeSetDemo2  
{
    public static void main(String[] args)  
    {
        TreeSet ts = new TreeSet();
 
        ts.add(new Student("lisi0",30));
        ts.add(new Student("lisixx",29));
        ts.add(new Student("lisi9",29));
        ts.add(new Student("lisi8",38));
        ts.add(new Student("lisixx",29));
        ts.add(new Student("lisi4",14));
        //ts.add(new Student(39));
        ts.add(new Student("lisi7",27));
 
 
 
        System.out.println(ts);
    }
}
 
//同姓名同年龄的学生视为同一个学生。按照学生的年龄排序。
class Student implements Comparable
{
    private int age;
    private String name;
    Student(String name,int age)
    {
        this.age = age;
        this.name = name;
    }
 
    public int compareTo(Object obj)
    {
        
        Student stu = (Student)obj;
        
        int num = new Integer(this.age).compareTo(new Integer(stu.age));
 
        return num==0?this.name.compareTo(stu.name):num;
 
        /*
        if(this.age>stu.age)
            return 1;
        if(this.age==stu.age)
            return this.name.compareTo(stu.name);
        return -1;
        */
        /**/
    }
 
    public int getAge()
    {
        return age;
    }
    public String toString()
    {
        return name+"::"+age;
    }
}

 

 

=============================================


/*
 
TreeSet:它可以给Set集合中的元素进行指定方式的排序。
        保证元素唯一性的方式:通过比较的结果是否为0.
        底层数据结构是:二叉树。
 
        排序的第一种方式:
            让元素自身具备比较性。只要让元素实现Comparable接口,覆盖compareTo方法即可。
            
            但是,如果元素自身不具备比较性,或者元素自身具备的比较性,不是所需要的。
            比如,学生的自然排序是按年龄排序,现在想要按照学生姓名排序。还可以不改动原有代码。
            这时怎么办呢?
        排序的第二种方式:自定比较器的方式。
            这时可以让集合自身具备比较性。
            可以定义一个类实现Comparator接口,覆盖compare方法。将该Comparator接口子类对象作为实际参数
            传递给TreeSet集合构造函数。
 
            该对象就是比较器。
 
 
 
*/

import java.util.*;
 
 
class TreeSetDemo3  
{
    public static void main(String[] args)  
    {
        TreeSet ts = new TreeSet(new StudentComparatorByName());
 
        ts.add(new Student("lisi0",30));
        ts.add(new Student("lisixx",29));
        ts.add(new Student("lisi9",29));
        ts.add(new Student("lisi8",38));
        ts.add(new Student("lisixx",29));
        ts.add(new Student("lisi4",14));
        //ts.add(new Student(39));
        ts.add(new Student("lisi7",27));
 
 
 
        System.out.println(ts);
    }
}
 
class StudentComparatorByName implements Comparator
{
    public int compare(Object o1,Object o2)
    {
        Student s1 = (Student)o1;
        Student s2 = (Student)o2;
 
        int num = s1.getName().compareTo(s2.getName());
        return num==0?new Integer(s1.getAge()).compareTo(new Integer(s2.getAge())):num;
    }
}
 
 
//同姓名同年龄的学生视为同一个学生。按照学生的年龄排序。
class Student implements Comparable
{
    private int age;
    private String name;
    Student(String name,int age)
    {
        this.age = age;
        this.name = name;
    }
 
    public int compareTo(Object obj)
    {
        
        Student stu = (Student)obj;
        
        int num = new Integer(this.age).compareTo(new Integer(stu.age));
 
        return num==0?this.name.compareTo(stu.name):num;
 
        /*
        if(this.age>stu.age)
            return 1;
        if(this.age==stu.age)
            return this.name.compareTo(stu.name);
        return -1;
        */
        /**/
    }
 
    public int getAge()
    {
        return age;
    }
    public String getName()
    {
        return name;
    }
    public String toString()
    {
        return name+"::"+age;
    }
}
 

 

分享到:
评论

相关推荐

    javaTreeSet实现图书管理系统

    在这个“javaTreeSet实现图书管理系统”中,我们可以利用`TreeSet`的特性来构建高效且功能完备的图书馆管理软件。下面将详细介绍如何利用`TreeSet`实现上述描述的功能。 1. **描述一个图书馆** 图书馆的基本信息...

    用java的TreeSet写的一个求并集算法

    在Java编程中,集合框架是处理数据的重要工具,而`TreeSet`作为其中之一,它是一个有序、不包含重复元素的集合。本知识点主要探讨如何利用Java的`TreeSet`类来实现两个集合的并集算法。 `TreeSet`是基于红黑树(Red...

    Java SE程序 TreeSet类中自定义CompareTo类

    Java SE程序 TreeSet类中自定义CompareTo类Java SE程序 TreeSet类中自定义CompareTo类Java SE程序 TreeSet类中自定义CompareTo类Java SE程序 TreeSet类中自定义CompareTo类Java SE程序 TreeSet类中自定义CompareTo类...

    Java TreeSet类的简单理解和使用

    Java TreeSet类的简单理解和使用 Java TreeSet类是Set接口的一个实现类,主要作用是用于对对象的排序以及确定存入对象的唯一性。TreeSet类可以自动地对存入的对象进行排序,并且保证存入的对象的唯一性。 在使用...

    java集合-TreeSet的使用

    TreeSet 是 Java 中的一个集合类,它实现了 SortedSet 接口,并且使用红黑树作为底层数据结构。TreeSet 具有以下主要特点: 排序性:TreeSet 中的元素是有序的,默认按照元素的自然顺序进行排序。或者,可以在创建 ...

    Java数据结构--13.Java8数据结构TreeSet.pdf

    《Java8数据结构——TreeSet详解》 在Java集合框架中,TreeSet是一个重要的数据结构,它是Set接口的实现类之一,与HashSet和LinkedHashSet不同,TreeSet具有排序功能,这是因为其不仅继承自AbstractSet,还实现了...

    java泛型 用了treeset

    使用TreeSet和Comparator,编写TreeSetTest2类,要求对TreeSet中的元素1-元素10进行排列,排序逻辑为奇数在前偶数在后,奇数按照升序排列,偶数按照降序排列。 如果需要的话可以下载,有写成文章的。有写了一点中文...

    java 集合框架(TreeSet练习)

    4. **迭代器**:`TreeSet`遵循Java集合框架的迭代规则,我们可以使用`iterator()`获取一个迭代器,然后通过`hasNext()`和`next()`来遍历并访问集合中的元素。 5. **遍历`TreeSet`**:由于`TreeSet`是有序的,我们...

    JavaTreeSet实现摊位销售管理系统

    * 摊位销售管理 1.有一个水果销售摊位,销售3种水果,重量和单价各不相同,实现多次的销售业务 2.销售时如果为顾客为女性销售金额打8折 3.显示当前各种水果的库存数 4.查询全部销售记录信息 5.加入其它水果品种 ...

    TreeSet 红黑树结构算法

    TreeSet 红黑树结构算法是 Java 中的一种数据结构,它是基于红黑树数据结构的实现。红黑树是一种自平衡的排序二叉树,它可以保证快速检索指定节点。TreeSet 和 TreeMap 之间存在着紧密的关系,下面我们将详细讲解 ...

    JavaTreeSet停车场管理系统

    停车场管理 1.一个停车场,内有多个车位,可停入各种车辆 2.只有具备车牌并高度低于3米的车辆可停入 3.停入时开始计费,按每小时2元 4.查询全部停车位的状态 5.按车牌及停车位号取车,取车时收停车费 ...

    Java TreeSet实现学生按年龄大小和姓名排序的方法示例

    Java TreeSet实现学生按年龄大小和姓名排序的方法示例 在 Java 中,TreeSet 是一...本文展示了如何使用 Java 的 TreeSet 和 Comparable 接口来实现学生按年龄大小和姓名排序的方法,这对 Java 开发人员来说非常有用。

    java中treemap和treeset实现红黑树

    从TreeSet的源代码可以看到,TreeSet使用了一个NavigableMap来保存Set集合的元素,其中NavigableMap是TreeMap的一个子接口。TreeSet的构造器可以指定一个NavigableMap对象来创建Set集合,也可以使用默认的TreeMap来...

    treeset 和 hashlist 实现的扑克牌游戏

    2. **TreeSet**:它是Java集合框架中`Set`接口的一个实现,基于红黑树数据结构。`TreeSet`保证了元素的排序性,无论是自然排序还是自定义比较器排序。它不允许有重复元素,并且提供了一种高效的查找、添加和删除元素...

    尚硅谷-实验:TreeSet的自然排序与定制排序.pdf

    ·课程共30天,715个知识视频小节,涉及主流Java使用的方方面面,全而不冗余 ·全程内容涵盖数据结构、设计模式、JVM内存结构等深度技术 ·企业级笔试面试题目深入源码级讲解,拒绝死记硬背 4.代码量更大、案例更...

    HashSet和TreeSet_围墙之外

    1. 存储结构:HashSet使用哈希表,TreeSet使用红黑树。 2. 顺序:HashSet无特定顺序,TreeSet保持排序。 3. 插入、删除和查找效率:HashSet平均O(1),最坏O(n);TreeSet平均O(logn)。 4. 允许的元素:两者都不允许...

    Class003_TreeSet.java

    Class003_TreeSet.java

    浅谈TreeSet中的两种排序方式

    Java 中 TreeSet 的两种排序方式 TreeSet 是 Java 中一种基于树形结构的 Set 实现,它具有自动排序的功能。在使用 TreeSet 时,我们可以通过实现 Comparable 接口或提供Comparator 对象来指定排序规则。下面,我们...

    学生成绩排序(TreeSet方式实现)

    `TreeSet`是Java集合框架中的一个类,它继承自`AbstractSet`并实现了`NavigableSet`接口。`TreeSet`的主要特点就是它会自动按照一定的顺序对存储的元素进行排序。在这个场景下,我们使用`TreeSet`来实现学生成绩的...

    java集合使用实例

    本资源聚焦于Java集合中的四个关键类:HashSet、TreeSet、HashMap和TreeMap,它们分别代表了不同类型的集合容器。 1. **HashSet**:HashSet是一个不允许重复元素的无序集合。它基于哈希表实现,插入和查找操作的...

Global site tag (gtag.js) - Google Analytics