一、什么是哈希表
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)
}
}
904

被折叠的 条评论
为什么被折叠?



