集合(Map)

Map

Map集合用于保存映射关系的数据key/Value,其中key不能重复,key和value存在一对一的关系,通过key可以找到value。

Map的方法

Map常用的方法

 

Map中有三种视图①键集Set(K) keySet()//返回映射中所有键的一个集视图,可以从这个集合中删除元素,它们将从映射中删除,但是不能增加任何元素。

 

②值集合Collection(V) values//返回映射中所有值的一个集视图,可以从这个集合中删除元素,它们将从映射中删除,但是不能增加任何元素。

 

③键/值对集Set<Map.Entry<K,V>> entrySet()//返回Map.Entry对象(映射中的键/值对)的一个集视图,可以从这个集合中删除元素,它们将从映射中删除,但是不能增加任何元素。

 

Map包含一个内部接口Entry,封装了一个key-value对,包含以下方法

getKey():返回key

getValue:返回Value

setValue:重新设置value

1、HashMap和Hashtable

public class HashMap<K,V> extends AbstractMap<K,V>

    implements Map<K,V>, Cloneable, Serializable {

}

 

public class Hashtable<K,V>

    extends Dictionary<K,V>

    implements Map<K,V>, Cloneable, java.io.Serializable {

}

HashMap与Hashtable的区别

HashMap是线程不安全的,Hashtable是线程安全的

Hashtable 使用 null作为key和value, HashMap可以使用null作为key或value。 由于key不能重复, 最多只能有一个key为null

判断key的条件,两个key通过equals方法返回true且hashCode值相等

2、LinkedHashMap

LinkedHashMap是HashMap的子类

LinkedHashMap使用双向链表维护key-value的次序。使迭代顺序和插入顺序一致。

public class LinkedHashMap<K,V>

    extends HashMap<K,V>

    implements Map<K,V>

{

 

}

        LinkedHashMap linkedHashMap = new LinkedHashMap();

        linkedHashMap.put("A", Simon);

        linkedHashMap.put("B", Lucy);

        linkedHashMap.put("C", Kevin);

        linkedHashMap.forEach((key, value) -> System.out.println(key + " ---> " + value));

//Output

A ---> Simon

B ---> Lucy

C ---> Kevin

3、Properties

Properties是Hashtable的子类

getProperty(): 获取属性值, 可以有 defaultValue。

setProperty(): 设置属性值

load():从属性文件中加载到 Properties里

store():输出到指定文件

4、TreeMap

TreeMap是一个红黑树的结构,根据key来进行排序

5、WeakHashMap

WeakHashMap使用弱引用保存键,弱引用将引用保存到另外一个对象中(散列键),对于这种类型的对象,垃圾回收器用一种特有的方式进行处理,通常,如果垃圾回收器发现某个特定的对象已经没有他人引用了,就将其回收。

如果某个对象只能由弱引用来引用,垃圾回收器就会回收它,需要将引用这个对象的弱引用放入队列中,弱引用将周期性地检查队列,以便找出新添加的弱引用。一个弱引用进入队列意味着这个键不在被他人使用,并且已经被收集起来,于是WeakHashMap将删除对应的条目。

6、IdentityHashMap

在这个类中,间的散列值不是用hashCode函数计算,而是用System.identityHashCode方法计算。在两个对象进行比较时,IdenetityHashMap类使用==,而不是使用equals。也就是说,不同键的对象,即使内容相同,也被视为不同的对象。

7、EnumMap

EnumMap是一个键类型为枚举类型的映射

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值