简介

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的更多相关文章

  1. Java基础知识笔记(八:集合类)

    目录 1  集合类简介  2  List介绍及简单使用 2.1  LinkedList介绍及简单使用 2.2  ArrayList介绍及简单使用 2.3  Vector介绍及简单使用 2.3.1  S ...

  2. Java基础加强之集合篇(模块记忆、精要分析)

    千里之行,始于足下.把别人的变成自己,再把自己的分享给别人,这也是一次提升的过程.本文的目的是以一篇文章从整体把握集合体系又不失一些细节上的实现,高手路过. 集合的作用与特点 Java是一门面向对象语 ...

  3. TreeSet

    一.TreeSet中的元素比较有两种方式 1.定义一个类,实现Comparable接口  复写的是comparato方法 2.定义一个类,实现Comparator接口,覆盖compara方法(此种方法 ...

  4. 集合3--毕向东java基础教程视频学习笔记

    Day 15 集合框架01 TreeSet02 TreeSet存储自定义对象03 二叉树04 实现Comparator方式排序05 TreeSet练习06 泛型概述07 泛型使用08 泛型类09 泛型 ...

  5. 黑马程序员_Java基础:集合总结

    ------- android培训.java培训.期待与您交流! ---------- 一.集合概念 相信大家都知道,java是一门面向对象的编程语言,而对事物的体现都是以对象的形式,所以为了方便对多 ...

  6. java基础之集合框架

    6.集合框架: (1)为什么出现集合类? 面向对象对事物的体现都是以对象的形式,为了方便对多个对象的操作,就对对象进行存储. 集合就是存储对象最常用的一种方式. (2)数组和集合都是容器,两者有何不同 ...

  7. Java开发中的高频Collections用法总结与Java平台实现源代码查看方式

    一生二,二生三,三生万物,基础永远是一个计算机人的立身之本,相信看到这篇文章的人一般都知道数据结构这门课程,要不也不会找到我的这篇文章.数据结构这门课程的分析奠定了工程师对各种平台中的容器类,集合类的 ...

  8. java中set接口的用法

    java中的set接口有如下的特点: 不允许出现重复元素: 集合中的元素位置无顺序: 有且只有一个值为null的元素. 因为java中的set接口模仿了数学上的set抽象,所以,对应的数学上set的特 ...

  9. Java 集合系列17之 TreeSet详细介绍(源码解析)和使用示例

    概要 这一章,我们对TreeSet进行学习.我们先对TreeSet有个整体认识,然后再学习它的源码,最后再通过实例来学会使用TreeSet.内容包括:第1部分 TreeSet介绍第2部分 TreeSe ...

  10. Java 学习之路 之 泛型方法

    前面介绍了在定义类.接口时可以使用类型形参,在该类的方法定义和 Field 定义.接口的方法定义中,这些类型形参可被当成普通类型来用.在另外一些情况下,我们定义类.接口时没有使用类型形参,但定义方法时 ...

随机推荐

  1. python,指定目录下创建自定义名称文件夹的方法

    比如,我们需要在D盘TU目录下创建名称为"test"的文件夹 脚本如下: import os path = r'D://tu' a = "test" os.mk ...

  2. Web前端入门第 37 问:多图细说 CSS grid 网格布局(二)子元素相关属性

    学习本文之前,建议先学习上一篇了解父元素的相关属性. 前文对 grid 网格布局中父元素容器相关的 CSS 属性做了详细介绍,本篇将继续学习子元素相关的 CSS 属性. 网格布局的一大波样式属性,父元 ...

  3. 36条技巧优化PHP代码(总结)

    原文:38条技巧优化PHP代码 1.如果一个方法能被静态,那就声明他为静态的,速度可提高1/4; 2.echo的效率高于print,因为echo没有返回值,print返回一个整型; 3.在循环之前设置 ...

  4. 解密prompt系列53. 再谈大模型Memory

    上一章畅想里面我们重点提及了大模型的记忆模块,包括模型能否持续更新记忆模块,模型能否把持续对记忆模块进行压缩更新在有限的参数中存储更高密度的知识信息,从而解决有限context和无限知识之间的矛盾.这 ...

  5. EF ——left join

    如何在EF中实现left join(左联接)查询_ var TestList = from p in context.PersonalInformation join d in context.Dep ...

  6. 网鼎杯-phpweb

    找了一些php读取文件的函数尝试读取源码,试了一个readfile就成功了 <?php $disable_fun = array("exec","shell_exe ...

  7. ubuntu安装clamav

    直接apt安装 sudo apt-get update sudo apt-get install clamav clamav-daemon clamscan --version 停止服务更新病毒库 为 ...

  8. 我也来说说经典面试题目-“OOM异常会导致JVM退出吗?”

    经典面试题目"OOM异常会导致JVM退出吗? 我的回答是"这要分情况看,对于守护线程来说,OOM并不会导致JVM退出:对于非守护线程来说,如果某个线程捕获了OOM异常并正确进行了处 ...

  9. 【已解决】戴尔 Inspiron 5457 和 5557 启动报错:Invalid configuration information - please run SETUP program.

    场景 我使用的是戴尔15-5557的笔记本电脑,在某次开机的时候系统提示:Invalid configuration information - please run SETUP program. 虽 ...

  10. Java编程--观察者(Observer)设计模式

    观察者设计模式 观察者设计模式是一种行为设计模式,允许对象在其状态改变时通知其他依赖对象.它创建了一种发布者(Subject)和订阅者(Observer)之间的依赖关系.这种模式经常用于实现事件处理系 ...