Map集合-案例:ArrayList集合存储HashMap元素并遍历
![]()
package Map_test.Map_02;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Set;
/*
案例:ArrayList集合存储HashMap元素并遍历
需求:创建一个ArrayList集合,存储三个元素,每一个元素都是HashMap,每一个HashMap的键 和值都是String,并遍历思路:
1. 创建ArrayList集合
2. 创建HashMap集合,并添加键值对元素
3. 把HashMap作为元素添加到ArrayList集合
4. 遍历ArrayList集合
*/
public class case_1 {
public static void main(String[] args) {
//1. 创建ArrayList集合
ArrayList<HashMap<String,String>> arrayList = new ArrayList<>();
//2. 创建HashMap集合,并添加键值对元素
HashMap<String,String> hashMap1 = new HashMap<>();
HashMap<String,String> hashMap2 = new HashMap<>();
HashMap<String,String> hashMap3 = new HashMap<>();
hashMap1.put("001","Peppa");
hashMap1.put("002","George");
hashMap1.put("003","Suzy");
hashMap2.put("001","X-man");
hashMap2.put("002","Super-man");
hashMap2.put("003","Homelander");
hashMap3.put("001","AAA");
hashMap3.put("002","BBB");
hashMap3.put("003","CCC");
//3. 把HashMap作为元素添加到ArrayList集合
arrayList.add(hashMap1);
arrayList.add(hashMap2);
arrayList.add(hashMap3);
//4. 遍历ArrayList集合
for (HashMap<String,String> hm : arrayList){ //遍历arrayList集合
Set<String> set = hm.keySet(); //获取arrayList集合的键集合
for (String key:set){ //遍历hashMap集合
String value = hm.get(key); //用键获取值
System.out.println(key+","+value); //输出键和值
}
}
}
}
/*控制台:
001,Peppa
002,George
003,Suzy
001,X-man
002,Super-man
003,Homelander
001,AAA
002,BBB
003,CCC
*/
![]()
package Map_test.Map_02;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Set;
/*
案例:HashMap集合存储ArrayList元素并遍历
需求:创建一个HashMap集合,存储三个键值对元素,每一个键值对元素的键是String,
值是ArrayList,每一个ArrayList的元素是String,并遍历
思路:
1. 创建HashMap集合
2. 创建ArrayList集合,并添加元素
3. 把ArrayList作为元素添加到HashMap集合
4. 遍历HashMap集合
第一个ArrayList集合元素:(三国演义)
诸葛亮,赵云
第一个ArrayList集合元素:(西游记)
唐僧,孙悟空
第一个ArrayList集合元素:(水浒传)
武松,鲁智深
*/
public class case_2 {
public static void main(String[] args) {
//1. 创建HashMap集合
HashMap<String, ArrayList<String>> hashMap =new HashMap<>();
//2. 创建ArrayList集合,并添加元素
ArrayList<String> sgyy = new ArrayList<>();
sgyy.add("诸葛亮");
sgyy.add("赵云");
ArrayList<String> xyj = new ArrayList<>();
xyj.add("唐僧");
xyj.add("孙悟空");
ArrayList<String> shz = new ArrayList<>();
shz.add("武松");
shz.add("鲁智深");
//3. 把ArrayList作为元素添加到HashMap集合
hashMap.put("三国演义",sgyy);
hashMap.put("西游记",xyj);
hashMap.put("水浒传",shz);
//4. 遍历HashMap集合
Set<String> keySet = hashMap.keySet(); //获取hashMap集合(外集合)的键集合
for (String key: keySet){ //遍历键集合
System.out.println(key); //输出键
ArrayList<String> value = hashMap.get(key); //用键获取值(ArrayList集合)
for (String s :value){ //遍历值,ArrayList集合(内集合)
System.out.println("\t"+s); //\t相当于Tab键
}
}
}
}
/*
水浒传
武松
鲁智深
三国演义
诸葛亮
赵云
西游记
唐僧
孙悟空
*/
案例: 统计字符串中每个字符出现的次数
![]()
package Map_test.Map_02;
import java.util.HashMap;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;
/*
案例:统计字符串中每个字符出现的次数
需求:键盘录入一个字符串,要求统计字符串中每个字符串出现的次数。
如果需要排序,可以用TreeMap集合的无参构造方法来自然排序
举例:键盘录入"aababcabcdabcde"
在控制台输出: “a(5)b(4)c(3)d(2)e(1)”
分析:
① 我们可以把结果分成几个部分来看: a(5),b(4),c(3),d(2),e(1)
② 每一个部分可以看成是:字符和字符对应的次数组成
③ 这样的数据,我们可以通过HashMap集合来存储,键是字符,值是字符出现的次数
注意:键是字符,类型应该是Character;值是字符出现的次数,类型应该是Integer
思路:
1. 键盘录入一个字符串
2. 创建HashMap集合,键是Character,值是Integer
3. 遍历字符串,得到每一个字符
4. 拿得到的每一个字符作为键到HashMap集合中去找对应的值,看其返回值
如果返回值是null:说明该字符在HashMap集合中不存在,就把该字符作为键,1作为值存储
如果返回值不是null:说明该字符在HashMap集合中存在,把该值加1,然后重新存储该字符和对应的值
5. 遍历HashMap集合,得到键和值,按照要求进行拼接
6. 输出结果
*/
public class TypeNumber {
public static void main(String[] args) {
//1. 键盘录入一个字符串
Scanner scanner = new Scanner(System.in);
System.out.println("输入字符串:");
String line = scanner.nextLine();
//2. 创建HashMap集合,键是Character,值是Integer
// HashMap<Character,Integer> hashMap = new HashMap<>();//不需排序
TreeMap<Character,Integer> hashMap = new TreeMap<>(); //TreeMap集合自然排序
//3. 遍历字符串,得到每一个字符
for (int i = 0 ; i < line.length(); i ++){
char key = line.charAt(i);
//4. 拿到的每一个字符作为键到HashMap集合中去找对应的值,看其返回值
Integer value = hashMap.get(key);
//如果返回值是null:说明该字符在HashMap集合中不存在,就把该字符作为键,1作为值存储
if (value==null){
// value=1;
hashMap.put(key,1);
}
//如果返回值不是null:说明该字符在HashMap集合中存在,把该值加1,然后重新存储该字符和对应的值
else {
value++;
hashMap.put(key,value);
}
}
//5. 遍历HashMap集合,得到键和值,按照要求进行拼接
StringBuilder sb = new StringBuilder();
Set<Character> chaSet = hashMap.keySet();
for (Character key:chaSet){
Integer Value = hashMap.get(key);
sb.append(key).append("(").append(Value).append(")");//用StringBuilder拼接
// System.out.print(key+"("+Value+")"); //直接输出
}
//6. 输出结果
String string = sb.toString();//StringBuilder转换成字符串
System.out.println(string);//输出字符串
}
}
/*控制台:
输入字符串:
zzxxyyyyyaaabbbb
a(3)b(4)x(2)y(5)z(2)
*/