Java学习-集合框架-Hashtable、Properties、TreeMap

news/2024/7/5 3:59:09

Java学习-集合框架-Map集合的实现类-Hashtable

线程安全,运行效率慢,不允许 null 作为 key 或者 value
函数:
void clear():清空哈希表
boolean contains():测试此映射表中是否存在与此指定值关联的键
boolean containsKey():测试指定对象是否为此哈希表中的键
boolean containsValue():如果此 Hashtable 将一个或多个键映射到此值,返回true
boolean equals(Object o):比较指定 Object 与此 Map 是否相等
V get(Object):返回指定键所映射的值
boolean isEmpty():是否为空
Set< K > keySet():返回此映射中包含的键的 Set

Properties

Hashtable 的子类,要求 key 和 value 都是 String,通常用于配置文件的读取

TreeMap

实现了 SortedMap 接口,可以对 key 自动排序

public class Student implements Comparable<Student>{
	private String name;
	private int stuNo;
	public String toString(){return "Student["+name+","+stuNo+"]";}
	public Student(String name,int stuNo){this.name = name;this.stuNo = stuNo;}
	@override
	public boolean equals(Object o){
		if(this == o)return true;
		if(0 == null || getClass() != o.getClass())return false;
		Student student = (Student)o;
		return stuNo == student.stuNo && Object.equals(name,student.name);
	}
	@override
	public int hashCode(){return Objects.hash(name,stuNo);}
	@override
	public int compareTo(Student o){return this.stuNo - o.stuNo;}
}
TreeMap<Student,String> treeMap = new TreeMap<Student,String>();
Student s1 = new Student("周杰伦",101);
Student s2 = new Student("陈奕迅",102);
Student s3 = new Student("林俊杰",103);
treeMap.put(s1,"台湾");
treeMap.put(s2,"香港");
treeMap.put(s3,"新加坡");
sout(treeMap.toString());//→ {Student[周杰伦,101]=香港,Student[陈奕迅,102]=台湾,Student[林俊杰,103]=新加坡}

treeMap.put(new Student("周杰伦",101),"福建");//姓名和学号相同被认为是同一个对象,将出生地更改为祖籍
treeMap.put(new Student("陈奕迅",102),"广东");
treeMap.put(new Student("林俊杰",103),"福建");
sout(treeMap.toString());//→ {Student[周杰伦,101]=福建,Student[陈奕迅,102]=广东,Student[林俊杰,103]=福建}
//删除
treeMap.remove(s3);
sout(treeMap.size());//→ 2
//遍历
for(Student key : treeMap.keySet()){sout(key+","+treeMap.get(key));}
//→ Student[周杰伦,101],福建 \n Student[陈奕迅,102],广东
for(Map.Entry<Student,String>entry : treeMap.entrySet()){sout(entry.getKey()+","+entry.getValue());}
//→ Student[周杰伦,101],福建 \n Student[陈奕迅,102],广东
//判断
sout(treeMap.containsKey(s1));//→ true

定制比较

TreeMap<Student,String>treeMap1 = new TreeMap<Student,String>(new Comparator<Student>(){
	@override
	public int compare(Student o1,Student o2){
		return o1.stuNo - o2.stuNo;
	}
});
treeMap1.put(s1,"台湾");
treeMap1.put(s2,"香港");
treeMap1.put(s3,"新加坡");
sout(treeMap1.toString());//→ //→ {Student[周杰伦,101]=香港,Student[陈奕迅,102]=台湾,Student[林俊杰,103]=新加坡}

TreeSet 与 TreeMap 的关系

public TreeSet(){
	this(new TreeMap<E,Object>());
}

TreeSet 底层代码用的就是 TreeMap


http://lihuaxi.xjx100.cn/news/836923.html

相关文章

沐神AI(NLP部分)

NLP authro&#xff1a;yzzhengdate&#xff1a;2023年02月08日P51-序列模型 序列数据&#xff0c;有时序结构的数据&#xff0c;例如电影的评价随时间变化而变化。音乐、语言、文本和视频都是连续的&#xff0c;标题“狗咬人”和“人咬狗”完全不一样 统计工具 条件建模抽象马…

C语言手写-植物大战僵尸

植物大战僵尸&#xff0c;是一个非常经典的小游戏&#xff0c;初学者从零开始&#xff0c;开发一个自己的植物大战僵尸&#xff0c;还是非常值得期待的&#xff01;可以作为自己的课设&#xff0c;也可以用来快速提升自己的项目开发能力。项目效果&#xff08;详细视频教程点这…

使用Canal实现mysql binlog增量订阅数据

目录 前言 简单原理 1.mysql数据库开启Binlog模式 1.docker 安装 canal 服务端 3.实现canal客户端 前言 是由公司业务改造搜索功能&#xff0c;使用ES搜索引擎中间件&#xff0c;那么我们需要将mysql中的数据同步至ES服务中&#xff0c;最总选择使用alibaba的canal增量订…

PT100温度采集电路设计

PT100是正温度系数的热敏电阻&#xff0c;顾名思义&#xff0c;随着温度的升高&#xff0c;电阻的阻值变大&#xff1b;相反&#xff0c;如果随着温度的升高&#xff0c;电阻的阻值变小&#xff0c;就是负温度系数的热敏电阻。之所以叫做PT100&#xff0c;是因为在0度时其阻值为…

【JavaEE】Java中复杂的Synchronized关键字

目录 一、synchronized的特性 &#xff08;1&#xff09;互斥 &#xff08;2&#xff09;刷新内存 &#xff08;3&#xff09;可重入 二、synchronized的使用 &#xff08;1&#xff09;修饰普通方法 &#xff08;2&#xff09;修饰静态方法 &#xff08;3&#xff09;修…

nohup后台启动程序jar包的时候进行定时按时间日期分割日志

在springboot应用开发中&#xff0c;常用jar方式进行部署&#xff0c;用nohup后台启动&#xff0c;这样生成的日志文件会越来越大&#xff0c;导致日志文件打开很慢&#xff0c;不方便后续问题的定位和解决。所以需要对日志进行分割&#xff0c;下面主要介绍按日期分割日志。话…

Python:每日一题之观光公交(前缀和)

题目描述 风景迷人的小城 Y 市&#xff0c;拥有 n 个美丽的景点。由于慕名而来的游客越来越多&#xff0c;Y 市特意安排了一辆观光公交车&#xff0c;为游客提供更便捷的交通服务。观光公交车在第 0 分钟出现在 1 号景点&#xff0c;随后依次前往 2、3、4……n 号景点。从第 i…

Linux设置开机自启keepalived+nginx服务

目录&#xff1a; 目录 背景&#xff1a; 分析过程&#xff1a; 解决方案&#xff1a; 解决方案一&#xff1a; 解决方案二&#xff1a; 背景&#xff1a; 在工作突发遇见了Linux虚拟机所在的宿主机重启了&#xff0c;虚拟机上部署nginxkeepalived服务&#xff0c;但是…