Map接口

Map:双列数据,存储key-value的数据。(可有存储null)
1、HashMap:作为Map的主要实现类,线程不安全,效率高。
2、LinkedHashMap:保证编历Map时,可实现顺序遍到历。
3、Tree Map:保证可按添加key-value进行排序,并遍历。
4、Hashtable:作为古老的实现类,不能放null。
5、Properties:常用来处理配置文件。key和value为String型。

HashMap底层:数组+链表(jdk7之前);数组+链表+红黑树(jdk8)。

HashMap的底层实现原理:

HashMap map=new HashMap();//在实例化以后,底层创建了长度为16的一维数组Entry[] table.

map. put (key1,value1); 
/*
首先,计算key1的哈希值,经过某种算法计算后,得到Entry数组中的存储位置.如果此位置为空,则添加成。如果不为空,比较key1和己存在数据key的哈希值,如果keyl与存在数据的哈希值不同,则添加成功。如相同,则继续比较keyl的equals(),如为false,则成功;如为true,则用value1替换value。
*/

Map结构的理解:

Map中的key:无序的、不可重复的,使用set存储所有key。

Map中的value:无序的、可重复的,使用Collection存储所有value。

一个键值对:key-value构成了一个Entry对象。

Mep中的entry:无序的,不可重复的,使用Set存储所有entry

key所在类要重写equals ()和hashCode ();value所在类要重写equals();

jdk8较Jdk7的底层实现方面的不同:
1、new HashMap():底层没有创建一个长度为16的数组。
2、idk8底层数组为Node[]。
3、首次调用put()方法时,底层创建长度为16的数组。
4、jak7底层结构只有:数组+链表。jdk8为数组+链表+红黑树。

当数组的某一个索引位置上的元素以全表形式存在的数据个数>8,且当前数组的长度>64时,此时索引位置上的所有数据改为使用红黑树存储。

概念:
1、DEFAULT_INITIAL_CAPACITY:HashMap的默认容量,16。
2、DEFAULT_LOAD_FACTOR:HashMap的默认加载因子:0.75。
3、threshold:扩容的临界值;二容量 填充因子:16 * 0.75——>12。
4.、TREEIFY_THRESHOLD:Bucket中链表长度大于该默认值(8),转为红黑树。
5、MIN_TREEIFY-CAPACITY:桶中的Node被树化时最小的hash表客量:64。 

Map中的常用方法
1.添加: 
put (object key,object value):将key-value添加到(修改)当前map对象中   。                          putAll (Map m):将m中的所有bey-value对存放到当前map中。
2、删除
remove (objectkey):移多除指定key的key-value对,并连回value。                                      clear():清除当前map中的所有数据。
3、查询:
get (object key):获取指定key对应的value。
containsKey(Object key):是否包含指定的key。
containsValue (object value):是否包含指定的 value。
size():返回map中key-value对的个数。
isEmpty();判断map是否为空。
equals (Object obj):判断当前map和参数对象obj是否相等。
4.元视图操作的方法(遍历):
Set  keySet ( ):返回所有key构成的set集合
Collection values ():返回所有value 构成的Collection集合。                                        Set entryset():返回所有key-value对构成的Set集合。

常用方法:
1、添加/修改:put()
2、删除:remove()
3、查调:get()
4、长度:size()
5、遍历:keySet ()  / values  / entryset()

TreeMap
1、向TreeMap中添加key-value,要求key必须由同一个类创建的对象,因为要按key进行排序。
2.排序方式:自然排序、定制排序

Properties处理属性文件
1、常用处理配置文件,key和Value都是String类型。
例:

Properties pros =new Properties();
FileInputStream fis=new FileInputStreum(“文件所在地”)
pros,.load (fis);
String name =pros.getProperty("name");
System..out.printin(name);
fis.close();



 

你可能感兴趣的:(java,开发语言)