小说网站制作,什么网站做旅行计划,百度公司给做网站吗,公司的网站建设费怎么入账目录 前言TreeMap实现的接口内部类常用方法 TreeSet实现的接口常用方法 前言
Map和set是一种专门用来进行搜索的容器或者数据结构#xff0c;其搜索的效率与其具体的实例化子类有关。
一般把搜索的数据称为关键字#xff08;Key#xff09;#xff0c; 和关键字对应的称为… 目录 前言TreeMap实现的接口内部类常用方法 TreeSet实现的接口常用方法 前言
Map和set是一种专门用来进行搜索的容器或者数据结构其搜索的效率与其具体的实例化子类有关。
一般把搜索的数据称为关键字Key 和关键字对应的称为值Value 将其称之为Key-value的键值对。
所以搜索有两种模型
纯key模型key-value 模型
Map中存储的就是key-value的键值对并且key必须是唯一的 Set中只存储了Key。
TreeMap
使用TreeMap必须导包import java.util.TreeMap;底层是一棵红黑树。
实现的接口 实现了SortedMap表示TreeMap可以排序没有实现Collection接口但是value的类型是Collection。
内部类
内部类Entry相当于我们前面实现的二叉搜索树中的TreeNode节点 其中提供了getKeygetValuesetValue方法 也重写了equalshashCodetoString方法。 但是Map.EntryK,V并没有提供设置Key的方法
方法解释K getKey()返回 entry 中的 keyV getValue()返回 entry 中的 valueV setValue(V value)将键值对中的value替换为指定value 常用方法
方法解释V get(Object key)返回 key 对应的 valueV getOrDefault(Object key, V defaultValue)返回 key 对应的 valuekey 不存在返回默认值defaultValueV put(K key, V value)设置 key 对应的 valueV remove(Object key)删除 key 对应的映射关系Set keySet()返回所有 key 的不重复集合Collection values()返回所有 value 的可重复集合SetMap.EntryK, V entrySet()返回所有的 key-value 映射关系boolean containsKey(Object key)判断是否包含 keyboolean containsValue(Object value)判断是否包含 value
注意事项
Map中存放键值对的Key是唯一的value是可以重复的在TreeMap中插入键值对时key不能为空否则就会抛NullPointerException异常value可以为空Map中的Key可以全部分离出来存储到Set中来进行访问(因为Key不能重复)Map中的value可以全部分离出来存储在Collection的任何一个子集合中(value可能有重复)Map中键值对的Key不能直接修改value可以修改如果要修改key只能先将该key删除掉然后再来进行重新插入。
TreeSet
其实TreeSet的底层就是TreeMap只不过在初始化时给的value值都是一个固定值。
实现的接口 TreeSet也是可以排序的实现了sortedSet带Tree的set和map其实可以排序的实现了Collection也实现了Iterable接口所以可以使用迭代器遍历如果要使用迭代器遍历TreeMap必须先调用entrySet方法得到Set才行。
常用方法
方法解释boolean add(E e)添加元素但重复元素不会被添加成功void clear()清空集合boolean contains(Object o)判断 o 是否在集合中Iterator iterator()返回迭代器boolean remove(Object o)删除集合中的 oint size()返回set中元素的个数boolean isEmpty()检测set是否为空空返回true否则返回falseObject[] toArray()将set中的元素转换为数组返回boolean containsAll(Collection? c)集合c中的元素是否在set中全部存在是返回true否则返回falseboolean addAll(Collection? extends E c)将集合c中的元素添加到set中可以达到去重的效果
注意事项
Set中只存储了key并且要求key一定要唯一TreeSet的底层是使用Map来实现的其使用key与Object的一个默认对象作为键值对插入到Map中的Set最大的功能就是对集合中的元素进行去重实现Set接口的常用类有TreeSet和HashSet还有一个LinkedHashSetLinkedHashSet是在HashSet的基础上维护了一个双向链表来记录元素的插入次序Set中的Key不能修改如果要修改先将原来的删除掉然后再重新插入TreeSet中不能插入null的key。