Java集合框架Map接口

Map
Collection接口
-List接口
-Set接口
Map接口
1.存放key-value数据
key:不能重复 底层实现使用set
value:可以重复 底层实现用Collection
2.实现类
①.HashMap:主要实现类
②.LinkedHashMap:使用链表的方式维护添加Map元素的顺序
③.TreeMap
④.Hashtable:线程安全低,不建议使用
子类Properties:通常用来处理属性文件,键和值都是String类型

3.常用方法
Object put(Object key,Object value):添加元素
Object remove(Object key):移除元素 删除一个Key-value
void putAll(Map t)
void clear()
Object get(Object key):获取指定value值,若没有找到对应的key值,则返回null
boolean containsKey(Object key)
boolean containsValue(Object value)
int size()
boolean isEmpty()
boolean equals(Object obj)
Set keySet()
Collection values()
Set entrySet()

@Test
public void testMap1() {
	Map map = new HashMap<>();
	map.put("A", 123);
	map.put("B", 456);
	map.put("C", null);
	map.put("B", 123);
	map.put(new Person("D", 20), 110);
	// 获取元素个数
	System.out.println(map.size());
	System.out.println(map);
	// 移除元素
	map.remove("B");
	System.out.println(map);
	// 更新value值(相当于修改,Set中set方法)
	map.put("C", 119);
	System.out.println(map);
	// 获取元素
	Object object = map.get("A");
	System.out.println(object);
	// 判断是否包含某个Key值
	boolean iscontainsKey = map.containsKey("C");
	System.out.println(iscontainsKey);

}

结果:
4
{A=123, B=123, C=null, Person [name=D, age=20]=110}
{A=123, C=null, Person [name=D, age=20]=110}
{A=123, C=119, Person [name=D, age=20]=110}
123
true

Map的遍历
1.Map中的key是使用Set存放,不可重复
2.Map中的value使用Collection来存放,可以重复
3.一个key-value,是一个Entry,Entry使用Set来存放,也是不可重复
4.在向Map中添加元素时,会调用key所在类的equals()方法,判断两个key是否相同 如果相同,添加的是后面的元素
5.遍历Map集合的常用方法 Set keySet() Collection values() Set entrySet()

@Test
	public void testMap2() {
		// 1.遍历key的集合
		Map map = new HashMap<>();
		map.put("刘备", 48);
		map.put("关羽", 30);
		map.put("张飞", 25);
		map.put(null, null);
		Set set = map.keySet();
		for (Object obj : set) {
			System.out.println(obj);
		}
		// 2.遍历value的集合
		System.out.println("---------------------");
		Collection values = map.values();
		Iterator iterator = values.iterator();
		while (iterator.hasNext()) {
			System.out.println(iterator.next());

		}
		System.out.println("-------------------");
		// 3.遍历key-value对
		// 方式一
		Set set2 = map.keySet();
		for (Object obj : set2) {
			/*Object key = obj;
			Object value = map.get(obj);*/
			System.out.println("key:"+obj+"-value:"+map.get(obj));

		}
          System.out.println("-------------------");
		//方式二
		Set set3 = map.entrySet();
		for (Object object : set3) {
			Map.Entry  entry=(Entry) object;
			Object key=entry.getKey();
			Object value=entry.getValue();
			System.out.println(key+":"+value);
		}
	}

结果:
关羽
null
张飞
刘备
---------------------
30
null
25
48
-------------------
key:关羽-value:30
key:null-value:null
key:张飞-value:25
key:刘备-value:48
-------------------
关羽:30
null:null
张飞:25
刘备:48

你可能感兴趣的:(Java集合框架,java集合框架,Map接口)