Map

Map和Collection接口是平级关系

HashMap是Map接口中最常见的实现类。

存储一组成对的键-值对象,提供key(键)到value(值)的映射,通过key来索引

--key不允许重复

--value允许重复

添加的对象将转换为Object类型

Map接口常用方法及遍历:

package com.hpe.collection;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
import java.util.Set;

import org.junit.Test;

/*
 * Map接口
 *    --HashMap:主要实现类
 *    --LinkedHashMap
 *    --TreeHashMap
 *    --Hashtable:线程安全的(了解)
 *       --Properties:常用来处理属性文件,键和值都是String。(应用)
 *       
 * Map常用方法:
 *   1.添加删除操作
 *   Object put(key,value);
 *   Object remove(key);根据key删除key-value对
 *   void putAll(Map t)
 *   void clear()
 *   2.元素查询操作
 *   Object get(key):获取key对应的value值,若没有,则返回null
 *   boolean contrainsKey(key):是否包含指定的key,包含返回true,反之false
 *   boolean contrainsValue(value)
 *   int size()
 *   boolean isEmpty()
 *   boolean equals(Object obj)
 *   3.元视图操作方法
 *   Set keySet()
 *   Collection value()
 *   HashMap:
 *   1.key是用Set存放,不可重复;
 *   2.value是Collection存放,可重复;
 *   3.一个key-value对,就是一个Enty,所有的enty是用Set来存放,不可重复
 *   4.HashMap中添加元素,会调用key所在的equals方法,判断两个key是否相同,若相同则只添加后面的元素
 * 
 */
public class TestMap {
	@Test
	public void test1() {
		Map map = new HashMap();
		map.put("A", 123);
		map.put("B", 456);
		map.put(123, "C");
		map.put(null, null);
		map.put(new Person("D", 20),90);
		map.put(new Person("D",20), 90);
		System.out.println(map.size());
		System.out.println(map);
		
		map.remove("B");
		System.out.println(map.size());
		
		Object obj = map.get(123);
		System.out.println(obj);
		
		boolean b1 = map.containsKey("B");
		System.out.println(b1);
	}
	@Test
	public void test2() {
		//遍历
		Map map = new HashMap();
		map.put("A", 123);
		map.put("B", 456);
		map.put(123, "C");
		map.put(null, null);
		map.put(new Person("D", 20),90);
		//1.遍历key
		Set set = map.keySet();
		for(Object obj : set) {
			System.out.println(obj);
		}
		//2.遍历value
		Collection values = map.values();
		Iterator iterator = values.iterator();
		while(iterator.hasNext()) {
			System.out.println(iterator.next());
		}
		//3.遍历key-value对
		//3.1
		Set set1 = map.keySet();
		for(Object obj : set) {
			System.out.println(obj+":"+map.get(obj));
		}
		//3.2
		Set set2 = map.entrySet();
		for(Object object : set2) {
			Map.Entry enty = (Map.Entry)object;
			System.out.println(enty.getKey()+":"+enty.getValue());
		}
	}
	@Test
	public void test3() throws FileNotFoundException, IOException {
		//Properties是Hashtable的子类,谁调用谁处理异常
		Properties properties = new Properties();
		properties.load(new FileInputStream(new File("jdbc.properties")));
		String user = properties.getProperty("user");
		String password = properties.getProperty("password");
		System.out.println("用户名:"+user+"\n密码"+password);
	}
}


HashMap 和 Hashtable 都是 Map 接口的实现类 区别:

Hashtable 是一个古老的 Map 实现类,不建议使用

Hashtable 是一个线程安全的 Map 实现,但 HashMap 是线程不安全的。

Hashtable 不允许使用 null 作为 key 和 value,而 HashMap 可以

TreeMap

TreeMap 存储 Key-Value 对时,需要根据 Key 对 key-value 对进行排序。

TreeMap 可以保证所有的 Key-Value 对处于有序状态。

TreeMap 的 Key 的排序: 自然排序 ,定制排序

Properties

Properties 类是 Hashtable 的子类,该对象用于处理属性文件

由于属性文件里的 key、value 都是字符串类型,所以 Properties 里的 key 和 value 都是字符串类型

存取数据时,建议使用setProperty(String key,String value)方法和getProperty(String key)方法

Properties pros = new Properties();

pros.load(new FileInputStream("jdbc.properties"));

String user = pros.getProperty("user");

System.out.println(user);

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fugogo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值