TreeSetTest
简介
java 核心编程
关于TreeSetTest的知识
输出
[[descrition=Toaster,partNumber=1234], [descrition=Widget,partNumber=4562], [descrition=Modem,partNumber=9912]]
[[descrition=Modem,partNumber=9912], [descrition=Toaster,partNumber=1234], [descrition=Widget,partNumber=4562]]
有两个输出,第一个是默认自带的比较函数结构
public int compareTo(Item other){
int diff = Integer.compare(partNumber, other.partNumber); // 先比较编号再比较字符串
return diff != 0? diff : description.compareTo(other.description);
}
表示 先比较编号再比较字符串
第二个输出,设定的比较方式采用字符串比较的方式进行排序。
NavigableSet sortByDescription = new TreeSet<>(Comparator.comparing(Item::getDescription));
code
import java.util.*;
public class TreeSetTest {
public static void main(String[]args){
SortedSet<Item> parts = new TreeSet<>();
parts.add(new Item("Toaster", 1234));
parts.add(new Item("Widget", 4562));
parts.add(new Item("Modem", 9912));
System.out.println(parts);
NavigableSet<Item> sortByDescription = new TreeSet<>(Comparator.comparing(Item::getDescription)); // 设定的比较方式,直接通过字符串进行排序
sortByDescription.addAll(parts);
System.out.println(sortByDescription);
}
}
import java.util.*;
public class Item implements Comparable<Item>{
private String description;
private int partNumber;
/**
* Constructs an item.
*
* @param aDescription
* the item's description
* @param aPartNumber
* the item's part number
*/
public Item(String aDescription, int aPartNumber){
description = aDescription;
partNumber = aPartNumber;
}
public String getDescription(){
return description;
}
public String toString(){
return "[descrition=" + description + ",partNumber=" + partNumber + "]";
}
public boolean equals(Object otherObject){
if(this == otherObject) return true;
if (otherObject == null) return false;
if(getClass() != otherObject.getClass()) return false;
Item other = (Item) otherObject;
return Objects.equals(description,other.description) && partNumber == other.partNumber;
}
public int hashCode(){
return Objects.hash(description, partNumber);
}
public int compareTo(Item other){
int diff = Integer.compare(partNumber, other.partNumber); // 先比较编号再比较字符串
return diff != 0? diff : description.compareTo(other.description);
}
}
TreeSetTest的更多相关文章
- Java基础知识笔记(八:集合类)
目录 1 集合类简介 2 List介绍及简单使用 2.1 LinkedList介绍及简单使用 2.2 ArrayList介绍及简单使用 2.3 Vector介绍及简单使用 2.3.1 S ...
- Java基础加强之集合篇(模块记忆、精要分析)
千里之行,始于足下.把别人的变成自己,再把自己的分享给别人,这也是一次提升的过程.本文的目的是以一篇文章从整体把握集合体系又不失一些细节上的实现,高手路过. 集合的作用与特点 Java是一门面向对象语 ...
- TreeSet
一.TreeSet中的元素比较有两种方式 1.定义一个类,实现Comparable接口 复写的是comparato方法 2.定义一个类,实现Comparator接口,覆盖compara方法(此种方法 ...
- 集合3--毕向东java基础教程视频学习笔记
Day 15 集合框架01 TreeSet02 TreeSet存储自定义对象03 二叉树04 实现Comparator方式排序05 TreeSet练习06 泛型概述07 泛型使用08 泛型类09 泛型 ...
- 黑马程序员_Java基础:集合总结
------- android培训.java培训.期待与您交流! ---------- 一.集合概念 相信大家都知道,java是一门面向对象的编程语言,而对事物的体现都是以对象的形式,所以为了方便对多 ...
- java基础之集合框架
6.集合框架: (1)为什么出现集合类? 面向对象对事物的体现都是以对象的形式,为了方便对多个对象的操作,就对对象进行存储. 集合就是存储对象最常用的一种方式. (2)数组和集合都是容器,两者有何不同 ...
- Java开发中的高频Collections用法总结与Java平台实现源代码查看方式
一生二,二生三,三生万物,基础永远是一个计算机人的立身之本,相信看到这篇文章的人一般都知道数据结构这门课程,要不也不会找到我的这篇文章.数据结构这门课程的分析奠定了工程师对各种平台中的容器类,集合类的 ...
- java中set接口的用法
java中的set接口有如下的特点: 不允许出现重复元素: 集合中的元素位置无顺序: 有且只有一个值为null的元素. 因为java中的set接口模仿了数学上的set抽象,所以,对应的数学上set的特 ...
- Java 集合系列17之 TreeSet详细介绍(源码解析)和使用示例
概要 这一章,我们对TreeSet进行学习.我们先对TreeSet有个整体认识,然后再学习它的源码,最后再通过实例来学会使用TreeSet.内容包括:第1部分 TreeSet介绍第2部分 TreeSe ...
- Java 学习之路 之 泛型方法
前面介绍了在定义类.接口时可以使用类型形参,在该类的方法定义和 Field 定义.接口的方法定义中,这些类型形参可被当成普通类型来用.在另外一些情况下,我们定义类.接口时没有使用类型形参,但定义方法时 ...
随机推荐
- [not]exists和[not]in的区别
前言:近期在处理业务实际问题时发现使用in导致查询速度非常慢,于是查阅资料后发现使用exists能极大缩短查询时间,于是便将此经历记录下来. 数据源: grade表 stu_info表 exists与 ...
- phpoffice php操作excel表格的导入和导出
https://packagist.org/packages/phpoffice/phpexcel 使用: composer require phpoffice/phpexcel 控制器引入 //引入 ...
- <HarmonyOS第一课10>ArkUI进阶#鸿蒙课程##鸿蒙生态#
课程介绍 <HarmonyOS第一课:ArkUI进阶>是专为HarmonyOS开发者设计的课程,旨在提升开发者在ArkUI框架中的布局技能.课程将重点讲解如何进行布局性能优化,包括精简节点 ...
- P6375 「StOI-1」小Z的旅行 题解
题意:P6375 「StOI-1」小 Z 的旅行 给定一座山,每座山有一个高度,只能向更低的山走或者向高度相同的山走,要求不能向高度相同的山连续走两次,不能原地不动. 每次走的权值都是两座山之间的坐标 ...
- Vue3 学习-初识体验-helloworld
在数据分析中有一个最重要的一环就是数据可视化, 数据报表的开发. 从我从业这几年的经历上看, 经历了从业务系统导表格数据, 到Excel+PPT, 再是开源报表工具, 再是主流商业BI产品(低/零代码 ...
- 用JavaScript打造全新编程语言:从无到有的完整实践指南
@charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...
- TVM: 编译流程
深度学习编译器介绍 每一种硬件对应一门特定的编程语言,再通过特定的编译器去进行编译产生机器码,那随着硬件和语言的增多,编译器的维护难度会有很大困难.现代编译器已经解决了这个问题. 为了解决这个问题,科 ...
- 云服务器的CPU利用率,外网出带宽使用率,内存利用率,磁盘利用率
云服务器的CPU利用率.外网出带宽使用率.内存利用率和磁盘利用率是用于监测服务器性能和资源使用情况的关键指标,它们各自代表不同方面的服务器运行状态: CPU利用率:CPU(中央处理单元)利用率表示服务 ...
- vscode调试python时提示无法将“conda”项识别为 cmdlet、函数、脚本文件或可运行程序的名称的解决方法
(1)vscode在调试python文件时提示如下信息: conda : 无法将"conda"项识别为 cmdlet.函数.脚本文件或可运行程序的名称.请检查名称的拼写,如果包括路 ...
- IPO——LeetCode⑫
//原题链接https://leetcode.com/problems/ipo/ 题目描述 Suppose LeetCode will start its IPO soon. In order to ...