学习Java第二十五天--集合框架之集合嵌套案例

Map集合和其它集合嵌套的案例、以及Map集合和Map集合嵌套的案例

案例1:Map和ArrayList的嵌套

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map.Entry;

//Map和ArrayList的嵌套使用案例
public class TestMapArrayList {

	public static void main(String[] args) {
		
		//一个游戏内有多个角色,如何构建对应关系
		
		//两种集合嵌套的声明
		HashMap<String , ArrayList<String>> gameMap = new HashMap<>();
		
		//创建Map集合的键值对
		ArrayList<String> list1 = new ArrayList<String>();
		list1.add("吉姆 雷诺");
		list1.add("凯瑞甘");
		list1.add("阿塔尼斯");
		gameMap.put("星际争霸Ⅱ", list1);
		
		ArrayList<String> list2 = new ArrayList<String>();
		list2.add("萨尔");
		list2.add("瓦里安");
		gameMap.put("魔兽世界", list2);
		
		ArrayList<String> list3 = new ArrayList<String>();
		list3.add("麦克雷");
		list3.add("D.Va");
		gameMap.put("守望先锋", list3);
		
		//遍历Map
		for (Entry<String , ArrayList<String>> entry: gameMap.entrySet()) {
			System.out.println(entry.getKey());
			ArrayList<String> value = entry.getValue();
			for (String v : value) {
				System.out.println("\t" + v);
			}
		}

	}

}

运行结果:

星际争霸Ⅱ
	吉姆 雷诺
	凯瑞甘
	阿塔尼斯
魔兽世界
	萨尔
	瓦里安
守望先锋
	麦克雷
	D.Va

不仅可以存储String信息,也可以是一个完整的对象,经过多层的嵌套,可以形成一个庞大且清晰的数据格式;

案例2:Map和Map的嵌套

import java.util.HashMap;
import java.util.Scanner;

//一个Map和Map嵌套的案例
public class TestDoubleMap {

	public static void main(String[] args) {
		
		//如果你想为一个信息进行双重加密,如何实现?
		
		Scanner input = new Scanner(System.in);

		
		//创建信息及内层加密
		HashMap<Integer , String> secret = new HashMap<Integer , String>();
		secret.put(123456, "LOL中婕拉击杀塞恩,或者塞恩被婕拉击杀时,击杀者会额外多2金币--\"植物大战僵尸\":)");
		
		//第一层加密
		HashMap<Integer , HashMap<Integer , String>>  secret2 = new HashMap<Integer , HashMap<Integer , String>>();
		secret2.put(654321, secret);
		
		//加密过程
		while(true) {
			System.out.println("请输入第一层密码:");
			int pwd1 = input.nextInt();
			HashMap<Integer , String>  map = secret2.get(pwd1);
			if(map != null) {
				while(true) {
					System.out.println("请输入第二层密码:");
					int pwd2 = input.nextInt();
					String result = secret.get(pwd2);
					if(result != null) {
						System.out.println("秘密是:"+result);
						break;
					}
					System.out.println("第二层密码输入错误,请重新输入!");
				}
				break;
			}
			System.out.println("第一层密码输入错误,请重新输入!");
		}
		
	}
}

输出结果:

请输入第一层密码:
654
第一层密码输入错误,请重新输入!
请输入第一层密码:
654321
请输入第二层密码:
123
第二层密码输入错误,请重新输入!
请输入第二层密码:
123456
秘密是:LOL中婕拉击杀塞恩,或者塞恩被婕拉击杀时,击杀者会额外多2金币--"植物大战僵尸":)

也可以进行更多重的加密,或者在每层中存储更多不同的信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值