java基础知识整理12

SortedMap接口和TreeMap实现类:
Tree Map也是基于红黑树对TreeMap中所有Key进行排序,从而保证TreeMap中所有key-value对处于有序状态,TreeMap也有两种排序方式。
自然排序:treeMap的所有key必须实现Comparable接口,而且所有key应该是同一个类的对象,否则将会抛出ClassCastException异常。
定制排序:创建TreeMap时,传入一个Comparator对象,该对象负责对TreeMap中所有的key进行排序。采用定制排序时不要求Map的key实现comparable接口。

Map.Entry<K,V>
firstEntry()
返回一个与此映射中的最小键关联的键-值映射关系;如果映射为空,则返回 null。
K
firstKey()
返回此映射中当前第一个(最低)键。
Map.Entry<K,V>
floorEntry(K key)
返回一个键-值映射关系,它与小于等于给定键的最大键关联;如果不存在这样的键,则返回 null。
K
floorKey(K key)
返回小于等于给定键的最大键;如果不存在这样的键,则返回 null。
V
get(Object key)
返回指定键所映射的值,如果对于该键而言,此映射不包含任何映射关系,则返回 null。
SortedMap<K,V>
headMap(K toKey)
返回此映射的部分视图,其键值严格小于 toKey。
NavigableMap<K,V>
headMap(K toKey, boolean inclusive)
返回此映射的部分视图,其键小于(或等于,如果 inclusive 为 true)toKey。
Map.Entry<K,V>
higherEntry(K key)
返回一个键-值映射关系,它与严格大于给定键的最小键关联;如果不存在这样的键,则返回 null。
K
higherKey(K key)
返回严格大于给定键的最小键;如果不存在这样的键,则返回 null。
Set
keySet()
返回此映射包含的键的 Set 视图。

Map.Entry<K,V>
lastEntry()
返回与此映射中的最大键关联的键-值映射关系;如果映射为空,则返回 null。
K
lastKey()
返回映射中当前最后一个(最高)键。
Map.Entry<K,V>
lowerEntry(K key)
返回一个键-值映射关系,它与严格小于给定键的最大键关联;如果不存在这样的键,则返回 null。
K
lowerKey(K key)
返回严格小于给定键的最大键;如果不存在这样的键,则返回 null。
NavigableSet
navigableKeySet()
返回此映射中所包含键的 NavigableSet 视图。

Map.Entry<K,V>
pollFirstEntry()
移除并返回与此映射中的最小键关联的键-值映射关系;如果映射为空,则返回 null。
Map.Entry<K,V>
pollLastEntry()
移除并返回与此映射中的最大键关联的键-值映射关系;如果映射为空,则返回 null。
V
put(K key, V value)
将指定值与此映射中的指定键进行关联。
void putAll(Map<? extends K,? extends V> map)
将指定映射中的所有映射关系复制到此映射中。
V
remove(Object key)
如果此 TreeMap 中存在该键的映射关系,则将其删除。
int size()
返回此映射中的键-值映射关系数。
NavigableMap<K,V>
subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive)
返回此映射的部分视图,其键的范围从 fromKey 到 toKey。
SortedMap<K,V>
subMap(K fromKey, K toKey)
返回此映射的部分视图,其键值的范围从 fromKey(包括)到 toKey(不包括)。
SortedMap<K,V>
tailMap(K fromKey)
返回此映射的部分视图,其键大于等于 fromKey。
NavigableMap<K,V>
tailMap(K fromKey, boolean inclusive)
返回此映射的部分视图,其键大于(或等于,如果 inclusive 为 true)fromKey。
Collection
values()
返回此映射包含的值的 Collection 视图

WeakHashMap实现类
HashMap的key保留对实际对象的强引用,这意味着只要Hash不销毁,该对象的key所引用的对象不会被垃圾回收,但WeakHashMap的key只保留对实际对象的弱引用,这意味着如果该HashMap对像所有Key所引用的对象没有被其他强引用变量所引用,则这写Key所引用的对象可能被垃圾回收,Hash Map也可能自动删除这些key所对应的Key-value对象。
在这里插入图片描述
如果要使用weakHashMap的key来保留对象的弱引用,不要让该key所引用的对象具有任何强引用,否则将失去使用weakHashMap的意义。
IdentityHashMap实现类:当且仅当两个key严格相等(key1==key2)时,indentityHashMap才认为两个key相等。
IdentityHashmap不保证任何key-value对之间的顺序,更不能保证他们的顺序随时间的推移而保持不变。
EnumMap实现类:
EnumMap 中所有Key都必须是单个枚举类的枚举值,创建EnumMap时必须显式或隐式指定它对应的枚举类。
EnumMap在内部以数组的形式保存,所以这种实现形式非常紧凑,高效。
EnumMap不允许使用null作为key值,但允许使用Null作为value。如果试图使用null作为key将抛出空指针异常,查询或删除不会抛出异常。
创建EnumMap时必须指定一个枚举类,从而将该EnumMap和指定枚举类关联起来。

在这里插入图片描述
HashSet和HashMap的性能实现:
Hash表里可以存储元素的位置被称为桶,通常情况下,每个桶里存储一个元素,此时有最好的性能。Hash算法可以根据HashCode值来计算出“桶”的存储位置,接着从桶中取出元素,但Hash表的状态为Open:当发生“Hash冲突”的时候,单个桶会存储多个元素,这些元素以链表的形式存储,必须按顺序搜索。
HashSet和Hash Map的hash表包含如下属性:
1. 容量:hash表桶中的数量。
2. 初始化容量:创建Hahs表时桶中的数量,HashMap,HashSet都允许在构造其中指定初始化的容量。
3. 尺寸:当前散列表中记录的数量。
4. 负载因子:负载银子等于“Size/Capacity”负载因子为0,表示空的hash表,0.5表示半满的散列表,轻负载的散列表具有冲突少,适宜插入与查询,但是使用迭代元素时会慢。
“负载极限”是一个0~1的数值,“负载极限”决定了Hash表中最大填满程度。当hash表中的负载因子到达指定的负载极限时,hash会成倍的增加容量(桶的数量),并将原有对象重新分配,放入新的桶内,称为rehashing。
HashSet,HashMap,Hash table的构造器允许制定一个负载极限,HashSet与HashMap,hashtable默认的负载极限为0.75.
操作集合的工具类:
1. 排序操作
Collection提供了如下几个方法用于对List集合元素进行排序:
Static voidreverse(List list):反转指定List集合中元素的顺序。
Static void shuffle(List list):对List集合元素进行随机排序。
Static void sort(List list):根据元素的自然顺序对指定List集合元素按升序进行排序。
Static void Sort(List list,Comparator c):根据comparator产生的顺序对List集合的元素进行升序排序。
Static void swap(List list,ing i,int j):将指定List集合中i处的元素和j处的元素进行交换。
Static void rotate(List list,int distance):当distance为正数时,将list集合的后distance个元素移到前面;当distance为负数时。将list集合的前distance个元素移到后面,该方法不会改变集合的长度。
在这里插入图片描述
查找替换操作:collection提供了如下用于查找的替换集合元素的方法。
Static int binarySearch(List list,Object key):使用二分搜索指定List集合,以获取指定对象在List集合中的索引。如果要该方法可以正常的工作,必须保证List中的元素已经处于有序状态。
static
<T extends Object & Comparable<? super T>>
T
max(Collection<? extends T> coll)
根据元素的自然顺序,返回给定 collection 的最大元素。
static
T
max(Collection<? extends T> coll, Comparator<? super T> comp)
根据指定比较器产生的顺序,返回给定 collection 的最大元素。
static
<T extends Object & Comparable<? super T>>
T
min(Collection<? extends T> coll)
根据元素的自然顺序 返回给定 collection 的最小元素。
static
T
min(Collection<? extends T> coll, Comparator<? super T> comp)
根据指定比较器产生的顺序,返回给定 collection 的最小元素。
static
void
fill(List<? super T> list, T obj)
使用指定元素替换指定列表中的所有元素。
static int frequency(Collection<?> c, Object o)
返回指定 collection 中等于指定对象的元素数。
static int indexOfSubList(List<?> source, List<?> target)
返回指定源列表中第一次出现指定目标列表的起始位置;如果没有出现这样的列表,则返回 -1。
static int lastIndexOfSubList(List<?> source, List<?> target)
返回指定源列表中最后一次出现指定目标列表的起始位置;如果没有出现这样的列表,则返回 -1。
static
boolean
replaceAll(List list, T oldVal, T newVal)
使用另一个值替换列表中出现的所有某一指定值。
2. 同步控制
在这里插入图片描述
实现线程安全。
设置不可变的集合:
Colelctions提供了三个方法来返回一个不可变的集合:
EmptyXXX():返回一个空的,不可变的对象,此处集合既可以是List,也可以是Set还可以是Map。
singleeonXXX():返回一个包含指定对象(只有一个或一项元素)的,不可变集合对象此处集合既可以是List,也可以是Set还可以是Map。
unmodidiableXXX:返回指定集合对象的不可变视图,此处集合既可以是List,也可以是Set还可以是Map。
繁琐的接口:Enumeration(接口可用于迭代)
一般不用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值