Map
Map:将键映射到值的对象。 地图不能包含重复的键; 每个键可以映射到最多一个值
Map和Collection的区别:
- Map是一个双列集合,常用于处理有对应关系的数据,key是不可以重复的,我们也称之为夫妻对集合
- Collection单列集合,Collection有不同的子体系,有的允许重复有索引有序,优的不允许重复而且无序,单身汉集合
Map的常用功能:
-
映射功能
V put(K key, V value) -
获取功能
V get(Object key)
int size() -
判断功能
boolean containsKey(Object key)
boolean containsValue(Object value)
boolean isEmpty() -
删除功能
void clear()
v remove(Object key) -
遍历功能
Set<Map.Entry<K,V>> entrySet() -
Set keySet()
-
Collection values()
package com.it04;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/*
* 需求:实现学号和姓名对应关系的存储
* 一对一:一个学号对应一个姓名
*/
public class MapDemo {
public static void main(String[] args) {
//创建Map对象
Map<String,String> map = new HashMap<String,String>();
//V put(K key, V value)就是将key映射到value的功能,如果key存在,则将value覆盖
System.out.println(map.put("001", "zhansan"));
System.out.println(map.put("002", "lisi"));
System.out.println(map.put("003", "wangwu"));
//void clear()清空所有的对应关系
//map.clear();
//v remove(Object key)指定key删除元素并返回删除的value,没有删除成功返回null
System.out.println(map.remove("003"));
//boolean containsKey(Object key)
System.out.println(map.containsKey("001"));
//boolean containsValue(Object value)
System.out.println(map.containsValue("wangwu"));
//boolean isEmpty()
System.out.println(map.isEmpty());
//int size()map对应关系的对数
System.out.println(map.size());
//V get(Object key)指定key返回对应的value
System.out.println(map.get("001"));
//Set<K> keySet()
Set<String> keys=map.keySet();
System.out.println(map.keySet());//key值set形式集合[001, 002]
for (String str : keys) {
System.out.println(str);
}
//Collection<V> values()
Collection<String> values = map.values();
System.out.println(map.values());//[zhansan, lisi]
for (String str : values) {
System.out.println(str);
}
System.out.println(map);
}
}
Map的遍历方式
第一种遍历方式:
- 首先,召集所有的key,
- 遍历key
- 获取key,找到对应的value
第二种遍历方式
-
class Entry<k,v>
-
Set<Map.Entry<K,V>> entrySet()
package com.it04;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
/*
* Map的遍历方式
* 第一种遍历方式:
* 首先,召集所有的key,
* 遍历key
* 获取key,找到对应的value
* 第二种遍历方式
* class Entry<k,v>{
* k key;
* v value;
* public Entry(k key,v value){
* this.key=key;
* this.value=value;
* }
* public k getkey(){
* return key;
* }
* public v getvalue(){
* return value;
* }
* }
*
* Set<Map.Entry<K,V>> entrySet()
*/
public class MapDemo2 {
public static void main(String[] args) {
//第一种遍历方式
method1();
//第二种遍历方式
method2();
}
private static void method2() {
Map<String,String> map = new HashMap<String,String>();
map.put("001", "zhansan");
map.put("002", "lisi");
map.put("003", "wangwu");
//创建证件
Set<Map.Entry<String, String>> entrys =map.entrySet();
//遍历对象
for (Map.Entry<String, String> entry : entrys) {
//获取每个对象
String key = entry.getKey();
String value = entry.getValue();
System.out.println("key:"+key+"----"+"value:"+value);
}
}
private static void method1() {
Map<String,String> map = new HashMap<String,String>();
map.put("001", "zhansan");
map.put("002", "lisi");
map.put("003", "wangwu");
//召集keys
Set<String> keys=map.keySet();
//遍历keys
for (String key : keys) {
//找value
String value = map.get(key);
System.out.println("key:"+key+"----"+"value:"+value);
}
}
}
使用HashMap存储数据并遍历
package com.it05;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;
/*
* 使用HashMap存储数据并遍历
*/
public class HashMapDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
HashMap<String,String> map = new HashMap<String,String>();
//添加映射关系
map.put("001", "zhansan");
map.put("002", "lisi");
map.put("003", "wangwu");
//遍历
Set<Map.Entry<String, String>> entrys =map.entrySet();
//遍历对象
for (Map.Entry<String, String> entry : entrys) {
//获取每个对象
String key = entry.getKey();
String value = entry.getValue();
System.out.println("key:"+key+"----"+"value:"+value);
}
}
}
使用HashMap存储数据并遍历(自定义对象作为key)
package com.it05;
public class Student {
String name;
int age;
public Student(String name, int age) {
//super();
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
};
}
package com.it05;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/*
* 使用HashMap存储数据并遍历(自定义对象作为key)
*/
public class HashMapDemo2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
HashMap<Student,String> map = new HashMap<Student,String>();
//创建key对象
Student s1 = new Student("zhangsan",18);
Student s2 = new Student("lisi",20);
Student s3 = new Student("wangwu",20);
//添加映射
map.put(s1, "001");
map.put(s2, "002");
map.put(s3, "003");
//遍历Map对象
Set<Map.Entry<Student, String>> entrys=map.entrySet();
for (Map.Entry<Student, String> entry : entrys) {
//获取每个对象
Student key = entry.getKey();
String value = entry.getValue();
System.out.println("key:"+key.toString()+"-----"+"value:"+value);
}
}
}