Map集合-案例

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)

 */

posted @ 2023-03-01 16:16  大宝贝94106  阅读(45)  评论(0)    收藏  举报