一、Map接口
1、 Map集合作用
Map表示双列集合,双列集合也叫键值对集合,用来保存一对一的键值对元素。
put(key,value);
put(key,value);
2、Map集合体系
3、Map常用方法
方法 | 说明 |
---|---|
V put(K key, V value) | 添加键值对 |
V remove(Object key) | 根据键删除对应的键值对 |
V get(Object key) | 根据键获取值 |
boolean containsKey(Object key) | 判断是否包含某个键 |
boolean containsValue(Object value) | 判断是否包含某个值 |
Set<K> keySet() | 把键转换成Set集合 |
Set<Map.Entry<K,V>> entrySet() | 把键值对转成Set集合 |
代码演示
import javax.jnlp.IntegrationService;
import java.util.HashMap;
import java.util.Map;
public class Test01 {
public static void main(String[] args) {
//创建Map集合
Map<String, Integer> map = new HashMap<>();
//V put(K key, V value)添加键值对
map.put("迪丽热巴",18);
map.put("古力娜扎",19);
map.put("马尔扎哈",20);
map.put("尼格买提",21);
//map集合中的key不能重复
//map.put("古力娜扎",20);
//V remove(Object key)根据键删除对应的键值对
map.remove("马尔扎哈");
//V get(Object key)根据键获取值
Integer age = map.get("古力娜扎");
System.out.println(age);
//boolean containsKey(Object key) 判断是否包含某个键
boolean b = map.containsKey("古力娜扎");
System.out.println(b);
//boolean containsValue(Object value)判断是否包含某个值
boolean b1 = map.containsValue(19);
System.out.println(b1);
System.out.println(map);
}
}
4、Map的遍历
keySet()键找值方式
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class Test02 {
public static void main(String[] args) {
//创建Map集合
Map<String, Integer> map = new HashMap<>();
//V put(K key, V value)添加键值对
map.put("迪丽热巴",18);
map.put("古力娜扎",19);
map.put("马尔扎哈",20);
map.put("尼格买提",21);
//Set<K> keySet() 把键转换成Set集合
Set<String> set = map.keySet();
//得到迭代器对象
Iterator<String> it = set.iterator();
while (it.hasNext()){
String key = it.next(); //获得第个key
Integer value = map.get(key);
System.out.println(key+"\t"+value);
}
}
}
entrySet()键值对方式
//*****************************************
//Set<Map.Entry<K,V>> entrySet()把键值对转成Set集合
/*Set<Map.Entry<String, Integer>> set1 = map.entrySet();
for(Map.Entry<String,Integer> entry : set1){
String key = entry.getKey();
Integer value = entry.getValue();
System.out.println(key+"\t"+value);
}*/
for (Map.Entry<String, Integer> entry : map.entrySet()) {
String key = entry.getKey(); //获取key
Integer value = entry.getValue(); //获取value
System.out.println(key+"\t"+value);
}
5、HashMap集合(存储自定义对象类型数据)
特点:
元素键不能重复,元素存取无序
HashMap键不重复也是依赖于hashCode()和equals()方法
import java.util.HashMap;
import java.util.Map;
public class Test03Map {
public static void main(String[] args) {
//创建一个Map集合,保存对象类型数据
Map<Person,String> map = new HashMap();
map.put(new Person("张三",18 ), "吉林");
map.put(new Person("李四",18),"北京");
map.put(new Person("王麻子",6),"湖北");
map.put(new Person("李瘸子",38),"江西");
map.put(new Person("zz",18),"广东");
System.out.println(map);
}
}
6、LinkedHashMap集合
特点
元素键不能重复
元素存取有序
代码演示
import java.util.LinkedHashMap;
public class Test05 {
public static void main(String[] args) {
//LinkedHashMap
//元素键不能重复 元素存取有序
LinkedHashMap<String,String> map = new LinkedHashMap<>();
//添加元素
map.put("张三","李四");
map.put("王五","赵六");
//存储相同的键,会用新的值覆盖旧的值
map.put("张三","张思");
System.out.println(map);
// 先放的张三后放到王五,所以张三在前 {张三=张思, 王五=赵六}
}
}
7、练习
需求:输入一个字符串判断里面每个字符出现次数。统计有多少种字符。
键盘输入一个字符串: abcdabc
a=2 b=2 c=2 d=1
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
public class TestExmp {
public static void main(String[] args) {
//需求:输入一个字符串判断里面每个字符出现次数。统计有多少种字符。
// • 键盘输入一个字符串: abcdabc
//创建Map<String,Integer>集合
Map<String, Integer> map = new HashMap<>();
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String str = sc.nextLine(); //abcdabc
//处理字符串
/*for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
}*/
char[] chars = str.toCharArray();
for (int i = 0; i < chars.length; i++) {
String c = chars[i]+"";
//判断map集合中是否存在此字符
if(map.containsKey(c)){ //abacdabc
//如果集合已经有了这个key
int count = map.get(c); //把原有的value取出
count++;
map.put(c,count); //再放回去
}else { //如果集合中没有这个key,把value直接赋值为1
map.put(c, 1); // a 1
}
}
//System.out.println(map);
for (Map.Entry<String, Integer> entry : map.entrySet()) {
String key = entry.getKey();
Integer value = entry.getValue();
System.out.println(key+"---"+value);
}
Set<String> set = map.keySet();
System.out.println(set.size());
}
}