package day05;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;
/**
*创建一个Map,保存某个学生的成绩:
*在控制台输入该学生成绩,格式:
*科目:成绩;科目:成绩;...
*例如:
*语文:99;数学:98;英语:97;物理:96;化学:95
*然后输出物理的成绩。
*然后将化学的成绩设置为96
*然后删除英语这一项。
*然后遍历该Map分别按照遍历key,Entry,value
*的形式输出该Map信息。
* @author Xiloer
*
*/
public class Test04 {
public static void main(String[] args) {
//首先创建Map集合
Map<String,Integer> m = new HashMap<String, Integer>();
System.out.println("输出学生成绩:");
Scanner scan = new Scanner(System.in);
String str = scan.nextLine();
/*
* String[] split(String regex)方法
* 根据参数regex(regex是一个正则表达式,用来限定分割规则
* 将字符串分割为若干个子字符串
*/
String[] arr = str.split(";");
for(int i = 0;i<arr.length;i++) {
String[] arr1 = arr[i].split(":");
String str1 = arr1[0];
//将字符串转换为基本类型。包装类.parse(String str)方法
Integer in = Integer.parseInt(arr1[1]);
m.put(str1, in);
}
System.out.println(m.get("物理"));
m.put("化学", 96);
m.remove("英语");
/*
* 遍历所有key
* Set<k> keySet();
* 该方法会将当前map集合所有的key存入到set集合
* 后将其返回。所以遍历这个set集合就相当于在遍历
* 所有的key
*/
Set<String> keySet = m.keySet();
for(String st: keySet ) {
System.out.println(st);
}
/*
* 遍历所有的value
* Collection<V> values()
* 将当前Map中所有的values存入到一个集合后返回
*/
Collection<Integer> values = m.values();
for(Integer i:values) {
System.out.println(i);
}
/*
* 遍历Map中每一组键值对
* Map有一个内部类Entry,其每一个实例用于表示
* Map中的每一组键值对
*
* Set<Entry> entrySet();
* 该方法会将当前Map中的每一个键值对(若干Entry)
* 存入到一个Set集合中返回
*/
Set<Entry<String,Integer>> entrySet = m.entrySet();
for(Entry<String,Integer> e:entrySet) {
String key = e.getKey();
int value = e.getValue();
System.out.println(key+":"+value);
}
}
}