集合之Map集合

 

​​​​​​Map接口:集合框架中的另一个父接口Map集合,用于储存一一对应的元素数据,第一个对象可以作为
索引,第二个对象作为值,我们称之为key-value,键值对。

储存数据的特点:
     (1)以key-value形式进行存储。
     (2)key与value都必须是引用类型
     (3)key可以为null。
     (4)key与value是单向一对一映射。
     (5)key不能重复

存储机制:
    Map是基于数组和链表的数据结构进行存储数据。
    作为key的对象采用了hash算法计算存储的数组
    (散列数组,散列桶)的位置.如果计算出来的位置,
    数组中此位置没有元素,就可以添加到
    散列桶内,如果有元素,key的equals方法
    返回值为false,就会存储在散列桶元素对应的单向链表中。
    如果key的equals方法返回true,就进行替换(覆盖)。
    PS:使用Map集合,做为key的数据类型应该重写equals和
    HashCode方法   

 常用方法:
      V  put(K k,V v):
            作用:用于存储一对key-value.  返回被替换的value值,如果不是替换就返回null
      V  get(K k):
                   作用:通过key对象,获取对应的value对象,如果集合中没有此key,返回null 

Map集合的遍历: 

public class TestMap01 {
	public static void main(String[] args) {
		/*定义一个map类型的集合*/
		Map<String,Integer> map = new HashMap<String,Integer>();
        /*put(key,value)存储一个键值对,返回被替换的value值,如果不是替换返回null*/
		map.put("10", 10);
		map.put("10", 1);
        /*get(key)通过key对象,获取对应得value值,如果集合中没有此key,返回null*/
		Integer val = map.get("10");
		System.out.println(val);
        /*map集合的遍历:第一种方法--用于获取Map中所有的key对象,返回一个Set*/
		Set<String> set = map.keySet();
		for (String key : set) {
			Integer value = map.get(key);
			System.out.println(key+"="+value);
		}
        /*第二种方法--将key-value封装成内部类的对象,返回对象的Set集合*/
        Set<Entry<String,Integer>> entrys = map.entrySet();
		for(Entry<String,Integer> e:entrys) {
			String key = e.getKey();
			Integer value = e.getValue();
			System.out.println(key+"="+value);
		}
        /*第三种方法--将map集合中的所有value封装到一个Collection集合中*/
	    Collection<Integer> ps = map.values();
		    for(Integer i:ps) {
			   System.out.println(i);
		   }
		System.out.println(map.size());
	}
}

Map接口的子类:
HashMap与HashTable的区别
   (1)HashTable是一个古老的类。不建议使用
   (2)HashTable是一个线程安全的类,HashMap线程不安全
   (3)HashTable的key不能是null,HashMap可以是null
LinkedHashMap:是HashMap子类,使用链表来维护key-value的顺序,在迭代时顺序与添加顺序一致。
TreeMap:
    是SortedMap子接口的实现类,使用了二叉树的数据结构,维护填入集合的顺序。
    (1)自然排序:
       往TreeMap里添加的key对象,可以实现Comparable接口。重写compareTo方法
    (2)定制排序:做为key对象的数据类型,可以不实现Comparabel接口。
       需要创建一个比较器Comparator对象。实现compare方法
Properties:
     是HashTable的子类型,用于封装属性文件的key-value信息
     因为在文件里写的都是字符串,因此Properties的key与value
     都是字符串类型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值