数据结构基础之《(8)—哈希表和有序表》

一、什么是哈希表

1、哈希表在使用层面上可以理解为一种集合结构
2、如果只有key,没有伴随数据value,可以使用HashSet结构
3、如果既有key,又有伴随数据value,可以使用HashMap结构
4、有无伴随数据,是HashMap和HashSet唯一的区别,底层怎么组织,实际结构是一样的
5、使用哈希表增(put)、删(remove)、改(put)和查(get)的操作,可以认为时间复杂度为O(1),但是常数时间比较大
6、放入哈希表的东西,如果是基础类型,内部按值传递,内存占用是这个东西的大小
哈希表中Integer、Double等类型一律按值传递
7、放入哈希表的东西,如果不是基础类型,内部按引用传递,内存占用是8个字节

二、哈希表和有序表区别

1、哈希表是UnSortedMap
2、有序表是SortedMap

三、有序表

1、TreeMap
你可以乱序的给它添加记录,但是在它内部是给你按顺序组织好的

2、有序表底层可以由非常多方式实现
AVL树,SB树,红黑树,跳表

3、有序数比较大小
当key是非基础类型时,要自己去指定怎么比较大小,通过比较器

4、例子

package class02;

import java.util.TreeMap;

public class Code09_HashMapAndSortedMap {

	public static void main(String[] args) {
		TreeMap<Integer, String> treeMap = new TreeMap<>();
		
		treeMap.put(1, "我是1");
		treeMap.put(8, "我是8");
		treeMap.put(9, "我是9");
		treeMap.put(2, "我是2");
		treeMap.put(7, "我是7");
		treeMap.put(3, "我是3");
		treeMap.put(10, "我是10");
		treeMap.put(6, "我是6");
		treeMap.put(4, "我是4");
		treeMap.put(5, "我是5");
		
		//获取第一个key
		System.out.println(treeMap.firstKey());
		//获取最后一个key
		System.out.println(treeMap.lastKey());
		//获取<=5的,但离5最近的key
		System.out.println(treeMap.floorKey(5));
		//获取>=5的,但离5最近的key
		System.out.println(treeMap.ceilingKey(5));
		
		//不如哈希表的地方,所有接口,时间复杂度为O(logN)
		
	}
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值