public static void main6(String[] args) {
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("博文", "刘亦菲");
hashMap.put("欣凯", "苍老师");
hashMap.put("毛林", null);
Set<String> manNameSet = hashMap.keySet();
for (String manName : manNameSet) {
String girlName = hashMap.get(manName);
if (girlName.startsWith("苍")) {
System.out.println("这个男生的名字:" + manName);
}
}
// 运行会报错 -> 报什么错误? -> 什么原因导致的报错.
// String girlName = hashMap.get(manName); 如果代码运行到毛林, value会是null,
// null不能点方法。 girlName.startsWith("苍")所以这行代码会报空指针异常
}
/**
* HashMap的数据的遍历 2种方式
* 1. 根据keyset遍历 远远多于第二种遍历方式
* 2. 根据entrySet遍历
* @param args
*/
public static void main5(String[] args) {
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("博文", "刘亦菲");
hashMap.put("欣凯", "苍老师");
hashMap.put("毛林", null);
// 1. 根据键的集合遍历整个HashMap (比较常用, 写法简单)
// keySet方法 返回此map中包含所有的键的Set集合
// Set<String> manNameSet = hashMap.keySet();
// System.out.println(manNameSet);
// for (String manName : manNameSet) {
// String girlFriend = hashMap.get(manName);
// System.out.println("男生的名字:" + manName + " 女朋友的名字:" + girlFriend);
// }
// 2. 根据内部的键值对Entry 集合进行遍历
// Set<> set里面放的是Entry对象 Entry<String, String>
// entry对象中包含了两个属性, 一个是键, 一个是值
Set<Map.Entry<String, String>> entries = hashMap.entrySet();
for (Map.Entry<String, String> entry : entries) {
String manName = entry.getKey();
String manGirlFriendName = entry.getValue();
System.out.println("男生的名字:" + manName + " 女朋友的名字:" + manGirlFriendName);
}
}
public class HashMap02 {
public static void main(String[] args) {
// (1)从键盘输入本组学员的姓名和他的手机号码,存放到HashMap<K,V>中,
// 泛型指定为<String,String>,姓名为key,手机号码为value,并且遍历显示
// (2)再从键盘输入姓名,查询他的手机号码
HashMap<String, String> hashMap = new HashMap<>();
Scanner scanner = new Scanner(System.in);
System.out.println("你打算输入几个学生");
int num = scanner.nextInt();
for (int i = 0; i < num; i++) {
System.out.println("请输入姓名");
String key = scanner.next();
System.out.println("请输入手机号");
String value = scanner.next();
hashMap.put(key,value);
}
Set<Map.Entry<String, String>> entries = hashMap.entrySet();
for (Map.Entry<String, String> entry : entries) {
System.out.println("姓名" + entry.getKey() + "\t手机号" + entry.getValue());
}
System.out.println("请输入名字可以查询到手机号");
String name = scanner.next();
System.out.println("你要查询的" + name + "手机号是" + hashMap.get(name));
}
}
public class HashMap03 {
public static void main(String[] args) {
// (1)创建HashMap对象,泛型为<String, ArrayList<String>>,
//(2)存储咱们班每组学员信息,组长姓名为key,组员们的姓名(包括组长自己)为value
//(2)遍历显示每一个小组信息
// 3)从键盘输入一个学员姓名,查找这个学员是否咱们班
HashMap<String, ArrayList<String>> hashMap = new HashMap<>();
ArrayList<String> list = new ArrayList<>();
list.add("张三");
list.add("李四");
list.add("王二");
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("孙悟空");
arrayList.add("八戒");
arrayList.add("唐僧");
hashMap.put(list.get(0),list);
hashMap.put(arrayList.get(0),arrayList);
Set<Map.Entry<String, ArrayList<String>>> entries = hashMap.entrySet();
for (Map.Entry<String, ArrayList<String>> entry : entries) {
System.out.println("组长姓名:" + entry.getKey() + "\t" + "组员姓名:" + entry.getValue());
}
System.out.println("请输入要查找的学员姓名");
Scanner scanner = new Scanner(System.in);
String name = scanner.next();
Collection<ArrayList<String>> values = hashMap.values();
boolean loop = false;
for (ArrayList<String> value : values) {
if (value.contains(name)){
loop = true;
break;
}
}
System.out.println("查询的结果" + loop);
}
}
public class HashMap04 {
public static void main(String[] args) {
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("孙悟空","金箍棒");
hashMap.put("八戒","九尺金牌");
//找出金箍棒的拥有者
Set<Map.Entry<String, String>> entries = hashMap.entrySet();
for (Map.Entry<String, String> entry : entries) {
String value = entry.getValue();
if (value.startsWith("金")){
System.out.println(entry.getKey());
}
}
}
}