Map集合特点

map集合特点就是采用了 Key-value键值对映射的方式进行存储 

key在Map里面是唯一的但是value可以重复,一个key对应一个value。

key是无序、唯一的

value是无序不唯一的

Map接口有两个集合HashMap和TreeMap及LinkedHashMap

HashMap采用哈希表的存储结构所以里面的数据是无序但是唯一的。(实现唯一的方式就是重写 Hashcode和equals方法)

TreeMap采用的是二叉树的存储方式里面的数据是唯一而且有序的而且一般是按升序的方式排列 (要实现comparable接口并且重写compareTo的方法用来实现它的排序

LinkedHashMap是HashMap的进化版它比HashMap速度更快而且还可以保证唯一性和有序性。(它的实现方式是哈希表和链表的结合)

HashMap的例子:

package com.map;

/**
 * 创建一个 HashMap的 集合
 * 
 */
import java.util.Collection;
import java.util.HashMap;
import java.util.Map.Entry;
import java.util.Set;

public class MapDemo {
	public static void main(String[] args) {
		// Map需要两个值 Key-value 用来装东西 两个必须是对着的 而且 Key只有一个 不能重复 不考虑 value的概念 Key重复
		// 就覆盖掉
		HashMap<Integer, String> hm = new HashMap<Integer, String>();
		// 添加 Map特有的 不是add而是 put
		hm.put(1, "一");
		hm.put(2, "二");
		hm.put(1, "三");
		hm.put(4, "四");
		hm.put(5, "五");
		// 长度 返回一个int值
		int a = hm.size();
		// key的唯一性 所以 会将相同的key覆盖掉
		System.out.println(a);
		// 删除 里面填key值
		hm.remove(1);
		System.out.println(hm.size());
		// 判断是否 存在 判断key
		boolean flag = hm.containsKey(4);
		System.out.println(flag);
		// 判断是否存在 判断 value
		boolean flag1 = hm.containsValue("五");
		System.out.println(flag1);
		// 判断是否 为空 返回值是 boolean类型的
		boolean flag2 = hm.isEmpty();
		System.out.println(flag2);

		// 拿出key的值 返回一个set型的集合
		Set<Integer> b = hm.keySet();
		System.out.println(b);

		// 拿出value的值 返回一个 Collection的 集合
		Collection<String> b2 = hm.values();
		System.out.println(b2);

		// get 方法是 引入key的值得到对应的value的值
		String s = hm.get(2);
		System.out.println(s);

		Set<Entry<Integer, String>> e = hm.entrySet();
		for (Entry<Integer, String> k : e) {
			System.out.println(k);
		}

		// 利用hm.keySet的返回值 输出 value的内容
		for (Integer k : b) {
			String l = hm.get(k);
			System.out.println(l);
		}

		// 通过 values返回的collection接口 循环输出所有的 value内容
		for (String h : b2) {
			System.out.println(h);
		}

	}

}
Map中的两个对象的使用方法和Set中很是相似 但是他们并没有什么关系

只是采用了相同的数据结构,Map的节点是一对数据,Set的节点是一个数据但是Map与Set都是唯一的

而且其中各个方法的使用方式很相似注意Map中添加数据的方式和LIst跟Set不相同






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值