当前位置: 首页 > news >正文

Java-TreeSet的用法-入门

Java语言中,Set接口有3种通用实现:HashSetTreeSet,LinkedHashSet。TreeSet是一种能够对内部元素进行排序的集合,它使用红黑树来存储内部元素,基于元素的值进行排序,它比HashSet要慢。

TreeSet要求内部元素实现Comparable接口,因为它是根据元素的compareTo来排序的。下面是一个demo:

package Colloections;

import java.util.LinkedList;
import java.util.TreeSet;

public class TreeSetDemo {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        TreeSet<Person> treeSet = new TreeSet<Person>();
        treeSet.add(new Person("albert", 8));
        treeSet.add(new Person("bob", 5));
        treeSet.add(new Person("bob", 13));
        
        for (Person person : treeSet) {
            System.out.printf(person.toString());
        }
    }
}

class Person implements Comparable<Person>{

    public String name;
    public int age;
    
    public Person(String n, int a){
        name = n;
        age = a;
    }
    
    public  String toString() {
        return String.format("Name is %s, Age is %d%n", name, age);
    }
    
    @Override
    public int compareTo(Person o) {
        // TODO Auto-generated method stub
        int nameComp = this.name.compareTo(o.name);
        return (nameComp != 0 ? nameComp : (this.age - o.age));
    }
    
}

程序输出为:

Name is albert, Age is 8
Name is bob, Age is 5
Name is bob, Age is 13

转载于:https://www.cnblogs.com/pzy4447/p/5024197.html

相关文章:

  • (四)鸿鹄云架构一服务注册中心
  • 占位子,考完试写
  • golang学习笔记 ---命令行参数
  • 森林病虫防治系统 (结束)
  • Linux内核中进程上下文、中断上下文、原子上下文、用户上下文的理解【转】...
  • 计算机
  • lucene4.7学习总结
  • python头部 #!/usr/bin/env python
  • nodejs安装及express
  • [error] 17755#0: *58522 readv() failed (104: Connection reset by peer) while reading upstream
  • Linux DNS之二DNS主从复制、子域授权及视图
  • 书摘—免费:商业的未来
  • DotNetMQ一个完整的消息队列(.NET)
  • Java 的对象和类
  • 关于时间管理
  • Google 是如何开发 Web 框架的
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • 03Go 类型总结
  • ECMAScript6(0):ES6简明参考手册
  • E-HPC支持多队列管理和自动伸缩
  • HTML-表单
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • Java小白进阶笔记(3)-初级面向对象
  • Laravel5.4 Queues队列学习
  • PermissionScope Swift4 兼容问题
  • Theano - 导数
  • uni-app项目数字滚动
  • vue脚手架vue-cli
  • 从伪并行的 Python 多线程说起
  • 计算机在识别图像时“看到”了什么?
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 区块链共识机制优缺点对比都是什么
  • 全栈开发——Linux
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 听说你叫Java(二)–Servlet请求
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 用Visual Studio开发以太坊智能合约
  • 【云吞铺子】性能抖动剖析(二)
  • Semaphore
  • 容器镜像
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • $.each()与$(selector).each()
  • (八)Flask之app.route装饰器函数的参数
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (四)汇编语言——简单程序
  • (转) Face-Resources
  • (转)EXC_BREAKPOINT僵尸错误
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • .NetCore部署微服务(二)
  • .Net的DataSet直接与SQL2005交互
  • .NET文档生成工具ADB使用图文教程
  • .Net小白的大学四年,内含面经