版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons)
一、Map接口简介
- Map接口是一种双列集合,它的每个元素都包含一个键对象Key和值对象Value,键和值对象之间存在一种对于关系,称为映射。
- 从Map集合中访问元素时,只要指定了Key,就能找到对应的Value
二、HashMap集合
HashMap集合是map接口的一个实现类,它用于存储键值映射关系,但必须保证不出现重复的键
1、基本存取
HashMap中如果键重复,会发生覆盖
package cn.itcast.chapter06.example10;
import java.util.HashMap;
import java.util.Map;
/**
* HashMap的用法
*/
public class Example10 {
public static void main(String[] args) {
Map map = new HashMap(); // 创建Map对象
map.put("1", "Jack"); // 存储键和值
map.put("2", "Rose");
map.put("3", "Lucy");
map.put("3", "Mary");
System.out.println("1:" + map.get("1")); // 根据键获取值
System.out.println("2:" + map.get("2"));
System.out.println("3:" + map.get("3"));
}
}
输出
1:Jack
2:Rose
3:Mary
2、获取键的集合
package cn.itcast.chapter06.example11;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
/**
* HashMap的用法
* 遍历集合中的元素,通过键值遍历
*/
public class Example11 {
public static void main(String[] args) {
Map map = new HashMap(); // 创建Map集合
map.put("1", "Jack"); // 存储键和值
map.put("2", "Rose");
map.put("3", "Lucy");
//1. 获取键的集合
Set keySet = map.keySet();
//2.迭代键的集合
Iterator it = keySet.iterator();
while (it.hasNext()) {
Object key = it.next();
// 3.获取每个键所对应的值
Object value = map.get(key);
System.out.println(key + ":" + value);
}
}
}
输出
1:Jack
2:Rose
3:Lucy
3、获取键值对集合
package cn.itcast.chapter06.example12;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
/**
* HashMap的用法
* 遍历集合中的元素,通过所有映射遍历
*/
public class Example12 {
public static void main(String[] args) {
// 创建Map集合
Map map = new HashMap();
// 存储键和值
map.put("1", "Jack");
map.put("2", "Rose");
map.put("3", "Lucy");
//1.获取所有的键值对元素
Set entrySet = map.entrySet();
Iterator it = entrySet.iterator();
while (it.hasNext()) {
// 2.通过迭代器获取集合中键值对映射关系
Map.Entry entry = (Map.Entry) (it.next());
// 3.获取Entry中的键
Object key = entry.getKey();
// 获取Entry中的值
Object value = entry.getValue();
System.out.println(key + ":" + value);
}
}
}
4、获取值的集合
注:HashMap和HashSet一样,存进去的顺序不定
package cn.itcast.chapter06.example13;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
/**
* Map的用法
* values()方法的使用
*/
public class Example13 {
public static void main(String[] args) {
Map map = new HashMap(); // 创建Map集合
map.put("1", "Jack"); // 存储键和值
map.put("2", "Rose");
map.put("3", "Lucy");
//获取map中所有的值
Collection values = map.values();
Iterator it = values.iterator();
while (it.hasNext()) {
Object value = it.next();
System.out.println(value);
}
}
}
输出
Jack
Rose
Lucy
5、LinkedHashMap集合:保证元素存取顺序一致
package cn.itcast.chapter06.example14;
import java.util.*;
/**
* Map的用法
* LinkedHashMap的用法
*/
public class Example14 {
public static void main(String[] args) {
// 创建Map集合
Map map = new LinkedHashMap();
map.put("1", "Jack"); // 存储键和值
map.put("2", "Rose");
map.put("3", "Lucy");
Set keySet = map.keySet();
Iterator it = keySet.iterator();
while (it.hasNext()) {
Object key = it.next();
Object value = map.get(key); // 获取每个键所对应的值
System.out.println(key + ":" + value);
}
}
}
输出
1:Jack
2:Rose
3:Lucy
三、Properties集合
- Map接口中还有一个实现类HashTable,它和HashMap很相似。
- 区别在于HashMap是线程安全的,HashTable存取元素时速度很慢,目前基本上被HashMap类所取代,但是HashTable类有一个子类Properties在实际应用中十分重要。
- Properties主要用来存储字符串类型的键和值,在实际开发中,经常使用Properties集合来存取应用的配置项,
- 假设有一个文本编辑工具,要求默认背景色是红色,字体大小为14px,语言为中文,其配置项应该如下
Background-color = red
Font-size = 14px
Language = chinese
1、添加元素
p.setProperty("Backgroup-color", "red");
2、获取所有的键
Enumeration names = p.propertyNames();
package cn.itcast.chapter06.example15;
import java.util.Enumeration;
import java.util.Properties;
/**
* Prorperties集合的使用
*/
public class Example15 {
public static void main(String[] args) {
// 创建Properties对象
Properties p = new Properties();
p.setProperty("Backgroup-color", "red");
p.setProperty("Font-size", "14px");
p.setProperty("Language", "chinese");
// 获取Enumeration对象所有键的枚举 Enumeration -- 相当于Iterator迭代器
Enumeration names = p.propertyNames();
while (names.hasMoreElements()) {
// 循环遍历所有的键
String key = (String) names.nextElement();
// 获取对应键的值
String value = p.getProperty(key);
System.out.println(key + " = " + value);
}
}
}
输出
Language = chinese
Backgroup-color = red
Font-size = 14px