interface Map
:K:键的类型;V:值得类型;
将键映射到值的对象;不能包含重复的键;每个键可以映射到最多一个值
demo:
package com.itxs.demo01;
import java.util.HashMap;
import java.util.Map;
/**
* @Classname : demo01
* @Description : TODO Map集合的使用
* @Author : [email protected]
*/
public class demo01 {
public static void main(String[] args) {
// 定义一个Map集合
Map<String,String> map = new HashMap<>();//底层也是哈希表
// Map集合添加成员的方式
map.put("Stu01","黄固");
map.put("Stu02","欧阳锋");
map.put("Stu03","南帝");
map.put("Stu04","洪七公");
System.out.println(map);
System.out.println("============");
// Stu03是唯一的,修改南帝,可以通过Stu03(键值),进行修改名字
map.put("Stu03","段智兴");
System.out.println(map);
}
}
方法名 | 说明 |
---|---|
V put(K key, V value) |
添加或修改元素 |
V remove(Object Key) |
删除键对应的元素 |
void clear() |
移除所有的键值对元素 |
boolean containsKey(Object Key) |
判断集合是否包含指定的键 |
boolean containsValue(Object Value) |
判断集合是否包含指定的值 |
boolean isEmpty() |
判断集合是否为空 |
int size() |
返回集合的长度 |
demo:
package com.itxs.demo01;
import java.util.HashMap;
/**
* @Classname : demo02
* @Description : TODO Map集合的一些常用功能
* @Author : [email protected]
*/
public class demo02 {
public static void main(String[] args) {
//定义一个HashMap集合
HashMap<String, String> hm = new HashMap<>();
// 添加成员
hm.put("STU001", "黄固");
hm.put("STU002", "欧阳锋");
hm.put("STU003", "段智兴");
hm.put("STU004", "洪七公");
// System.out.println(hm);
//*********************************************
// remove 删除键对应的元素
//hm.remove("STU003"); // 删除 段智兴
//*********************************************
// clear 清空所有元素
// hm.clear(); //慎用
//*********************************************
// 判断集合是否为空
// System.out.println(hm.isEmpty());// 不是空返回false,空集合返回true
//**********************************************
//判断集合当中是否有存在的键
// System.out.println(hm.containsKey("STU001")); // 集合存在STU001键返回true
// System.out.println(hm.containsKey("STU007")); // 集合中不存在STU007返回false
//************************************************
//判断集合中是否存在已有的值
System.out.println(hm.containsValue("黄固")); //集合中存在黄固 返回true
System.out.println(hm.containsValue("王重阳"));//集合中不存在王重阳,返回false
System.out.println(hm);
}
}
方法名 | 说明 |
---|---|
V get(Object Key) |
根据键获取值 |
Set |
获取所有键的集合 |
Collection |
获取所有值的集合 |
Set |
获取所有键值对对象的集合 |
demo:
package com.itxs.demo01;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/**
* @Classname : demo03
* @Description : TODO HashMap的获取功能
* @Author : [email protected]
*/
public class demo03 {
public static void main(String[] args) {
HashMap<String, String> hm = new HashMap<>();
//添加成员
hm.put("STU001", "黄固");
hm.put("STU002", "欧阳锋");
hm.put("STU003", "段智兴");
hm.put("STU004", "洪七公");
//****************************************
// 根据键获取一个值
//System.out.println(hm.get("STU001")); //黄固
//****************************************
// 获取一个键的集合 KeySet方法
// Set hms = hm.keySet();
// for (String s : hms) {
// System.out.print(s+",");//STU001,STU003,STU002,STU004,
// }
//****************************************
//获取HashMap集合里面的值类型集合
// Collection values = hm.values();
// for (String value : values) {
// System.out.print(value + ",");//黄固,段智兴,欧阳锋,洪七公,
// }
//****************************************
// 获取 键 值 对的集合
Set<Map.Entry<String, String>> entries = hm.entrySet();
for (Map.Entry<String, String> entry : entries) {
System.out.print(entry + ",");//STU001=黄固,STU003=段智兴,STU002=欧阳锋,STU004=洪七公,
}
}
}
三种遍历方式,常用的是第二种
package com.itxs.demo01;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/**
* @Classname : demo04
* @Description : TODO Map集合的遍历
* @Author : [email protected]
*/
public class demo04 {
public static void main(String[] args) {
HashMap<String, String> hm = new HashMap<>();
//添加成员
hm.put("STU001","黄固");
hm.put("STU002","欧阳锋");
hm.put("STU003","段智兴");
hm.put("STU004","洪七公");
//*********************************************
// 第一种方式 ;values 只能获取值
// Collection values = hm.values();
// for (String value : values) {
// System.out.println(value);
// }
//*********************************************
//第二种方式,通过获取键的集合,来获取键对应的值
Set<String> hk = hm.keySet();
for (String s : hk) {
System.out.println(s +"<==>" + hm.get(s));
}
//*********************************************
//第三种方式,通过获取键值对的方式,分别获取键和值
// Set> es = hm.entrySet();
// for (Map.Entry e : es) {
// String key = e.getKey(); // 获取键值对中的键
// String value = e.getValue();
// System.out.println(key + "<==>" + value);
// }
}
}
学生类对象
package com.itxs.demo01;
/**
* @Classname : Student
* @Description : TODO 学生类对象
* @Author : [email protected]
*/
public class Student {
//两个基本属性
private String name;//姓名
private int age;//年龄
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public Student() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
三种遍历方式
package com.itxs.demo01;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/**
* @Classname : demo05
* @Description : TODO Map集合存储学生类对象进行遍历
* @Author : [email protected]
*/
public class demo05 {
public static void main(String[] args) {
HashMap<String, Student> hm = new HashMap<>();
// 添加对象
hm.put("STU001",new Student("andy",19));
hm.put("STU002",new Student("lucy",16));
hm.put("STU003",new Student("lily",17));
hm.put("STU004",new Student("jim",18));
hm.put("STU005",new Student("LiciNius",22));
//三种方式进行遍历
//***************************************************
//第一种:获取集合里面的值
// Collection hv = hm.values();
// for (Student stu : hv) {
// System.out.println(stu);
// }
//***************************************************
// 第二种,获取键的集合,根据键来获取值
Set<String> hks = hm.keySet();
for (String hk : hks) {
Student stu = hm.get(hk);
System.out.println(hk + "<==>" + stu.getName() +","+stu.getAge());
}
//***************************************************
//第三种方式,获取键值对,分别获取键和值
// Set> es = hm.entrySet();
// for (Map.Entry e : es) {
// String key = e.getKey();
// Student s = e.getValue();
// System.out.println(key + "<==>" + s.getName() +","+s.getAge());
// }
}
}
三种遍历方式
package com.itxs.demo02;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/**
* @Classname : demo01
* @Description : TODO Arraylist集合存储 HashMap集合
* @Author : [email protected]
*/
public class demo01 {
public static void main(String[] args) {
ArrayList<HashMap<String, String>> list = new ArrayList<>();
// 三个HashMap集合
HashMap<String, String> hm01 = new HashMap<>();
HashMap<String, String> hm02 = new HashMap<>();
HashMap<String, String> hm03 = new HashMap<>();
// 每个集合添加两个元素
hm01.put("杨过", "小龙女");
hm01.put("雷公", "电母");
//**********************
hm02.put("萧炎", "林动");
hm02.put("孙悟空", "猪八戒");
//********************** 休息看剧《梦华录》
hm03.put("顾千帆", "赵盼儿");
hm03.put("孙三娘", "杜长风");
//*****************************************************
// list集合添加元素
list.add(hm01);
list.add(hm02);
list.add(hm03);
//======================================================
//第一种方式
for (HashMap<String, String> shm : list) {
Set<String> st = shm.keySet(); //获取每个HashMap键集合
for (String s : st) {
System.out.println(s + "<==>" + shm.get(s));
}
}
//======================================================
System.out.println("===================");
//第二种方式
for (HashMap<String, String> shm : list) {
Set<Map.Entry<String, String>> es = shm.entrySet();
for (Map.Entry<String, String> e : es) {
String key = e.getKey();
String val = e.getValue();
System.out.println(key + "<==>" + val);
}
}
}
}
package com.itxs.demo02;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/**
* @Classname : demo02
* @Description : TODO HashMap集合存储ArrayList集合
* @Author : [email protected]
*/
public class demo02 {
public static void main(String[] args) {
//HashMap集合存储ArrayList集合
HashMap<String, ArrayList<String>> hm = new HashMap<>();
// 三个ArrayList集合
ArrayList<String> list01 = new ArrayList<>();
ArrayList<String> list02 = new ArrayList<>();
ArrayList<String> list03 = new ArrayList<>();
// ***********************************************
// list01添加元素
list01.add("黄固");
list01.add("欧阳锋");
list01.add("王重阳");
list01.add("段智兴");
list01.add("洪七公");
//************************************************
//list02添加元素
list02.add("降臣");
list02.add("萤勾");
list02.add("旱魃");
list02.add("侯卿");
//*************************************************
//list03添加元素
list03.add("刘德华");
list03.add("郭富城");
list03.add("张学友");
list03.add("黎明");
//************************************************
//HashMap hm添加元素
hm.put("中原五绝", list01);
hm.put("玄冥教四大尸祖", list02);//《画江湖之不良人》
hm.put("港星四大天王", list03);
//***************************************************
//第一种遍历方式,获取键集合
Set<String> Ks = hm.keySet();
for (String k : Ks) {
ArrayList<String> list = hm.get(k);
System.out.println(k);
System.out.println("\t" + list);
}
//***************************************************
System.out.println("=======================================");
//第二种遍历方式
Set<Map.Entry<String, ArrayList<String>>> es = hm.entrySet();
for (Map.Entry<String, ArrayList<String>> e : es) {
String key = e.getKey();
ArrayList<String> value = e.getValue();
System.out.println(key);
for (String s : value) {
System.out.println("\t" + s);
}
}
}
}
package com.itxs.demo02;
import java.util.HashMap;
import java.util.Scanner;
import java.util.Set;
/**
* @Classname : demo03
* @Description : TODO 通过Map集合进行统计字符串里面字符出现次数
* @Author : [email protected]
*/
public class demo03 {
public static void main(String[] args) {
//输入对象,随意输入一个字符串
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个字符串");
String str = scanner.nextLine();
// 定义一个HashMap集合
HashMap<Character, Integer> cis = new HashMap<>();
//通过循环进行判断
for (int i = 0; i < str.length(); i++) {
char a = str.charAt(i);//获取字符串每个字符,当作键值
Integer inte = cis.get(a);//根据键键判断是否存
if(null == inte){ //判断为空则是出现第一次,第一次添加到集合,值为1
cis.put(a,1);//
}else{
inte++; // 不是第一次出现 键不变,值进行+1
cis.put(a,inte);
}
}
// 输出字符串里面每个字符出现的次数
Set<Character> ke = cis.keySet();
for (Character character : ke) {
System.out.println(character +":"+ cis.get(character));
}
}
}