Java基础增强:集合的嵌套案例

一入编程深似海,从此妹子是路人。

List集合的遍历方式:

  

List list = new ArrayList();
//第一种遍历方式
System.out.println(list);
//第二种遍历方式,最常用的一种foreach
LinkedList<Integer> list = new LinkedList<Integer>();
        for (Integer integer : list) {
            System.out.println(integer);
        }

Map集合的遍历方式:

  方式1:根据键找值 获取所有键的集合 遍历键的集合,获取到每一个键 根据键找值

private static void print(HashMap<Integer, String> h) {
        Set<Integer> keySet = h.keySet();
        for( Integer key:keySet) {
            System.out.println(key+"="+h.get(key));
        }
    }

  方式2:根据键值对对象找键和值 获取所有键值对对象的集合 遍历键值对对象的集合,获取到每一个键值对对象 根据键值对对象找键和值

//h为一个map对象
for(Entry<String, String> entry:h.entrySet()) {
            System.out.println(entry.getKey()+“ ”+entry.getValue());

案例一:

三国演义
    吕布
    周瑜
笑傲江湖
    令狐冲
    林平之
神雕侠侣
    郭靖
    杨过

   通过利用Mao和ArrayList的嵌套实现上述格式,具体实现代码如下:

package test.day14;

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

/**
 * map和List的嵌套
 * @author zhangdali
 *
 */
public class HashMapTest2 {

    public static void main(String[] args) {
//map和list嵌套声明
        LinkedHashMap<String, ArrayList<String>> h = new LinkedHashMap<>();
//创建map集合的第一个键值对
        ArrayList<String> list = new ArrayList<String>();
        list.add("吕布");
        list.add("周瑜");
        h.put("三国演义", list);
//创建map集合的第二个键值对
        ArrayList<String> list2 = new ArrayList<String>();
        list2.add("令狐冲");
        list2.add("林平之");
        h.put("笑傲江湖", list2);
//创建map集合的第三个键值对
        ArrayList<String> list3 = new ArrayList<String>();
        list3.add("郭靖");
        list3.add("杨过");
        h.put("神雕侠侣", list3);
        for(Entry<String, ArrayList<String>> entry:h.entrySet()) {
            System.out.println(entry.getKey());
            ArrayList<String> value2 = entry.getValue();
            for( String value:value2) {
                System.out.println("\t"+value);
            }
        }
    }

}

案例二:

 周瑜-----小乔
     孙权-----大乔
  杨过-----小龙女
  吕布-----貂蝉

通过利用List和map的嵌套实现,具体代码如下:

package test.day14;

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

public class ListMapTest {

    public static void main(String[] args) {
//lis和map嵌套
       ArrayList<LinkedHashMap<String, String>> list = new ArrayList<LinkedHashMap<String, String>>();
       LinkedHashMap<String, String> map = new LinkedHashMap<String, String>();
       map.put("周瑜", "小乔");
       map.put("孙权", "大乔");
       map.put("杨过","小龙女");
       map.put("吕布","貂蝉");
       list.add(map);
       for(LinkedHashMap<String, String> map2 :list) {
           for(  Entry<String, String> entry:map.entrySet()) {
              System.out.println(entry.getKey()+"-----"+entry.getValue());
              int i=0;
               if(i%2==0 && i!=0) {
                   System.out.println();
                   i=0;
               }
               i++;
           }
       }
         }
}

案例三:

    .需求:有一句话设置了三层防护,每一层都必须通过密码来获取,请想怎么设计这个程序’

    通过利用map和map的的嵌套实现,具体的实现代码如下:

package test.day14;

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

public class MapQianTaoTest {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        HashMap<Integer, String> map = new HashMap<Integer, String>();
        map.put(120, "三十六计");
        HashMap<Integer, HashMap<Integer, String>> map2 = new HashMap<>();
        map2.put(119, map);
        HashMap<Integer, HashMap<Integer, HashMap<Integer, String>>> map3= new HashMap<Integer,
                HashMap<Integer, HashMap<Integer, String>>>();
        map3.put(110, map2);

       while( true) {
           System.out.println("请输入第一层密码");
           int pwd = sc.nextInt();
           HashMap<Integer, HashMap<Integer, String>> map4 = map3.get(pwd);
           if( null!= map4) {
                while(true) {
                    System.out.println("请输入第二层密码");
                    int pwd2 = sc.nextInt();
                     HashMap<Integer, String> map5 = map4.get(pwd2);
                    if( map5!=null) {
                        while(true) {
                        System.out.println("请输入第三层密码");
                        int pwd3 = sc.nextInt();
                        String result = map5.get(pwd3);
                        if(result!=null) {
                            System.out.println(result);
                            break;
                        }
                        System.out.println("最后一层密码输入错误,重新输入");
                      }
                        break;
                    }
                    System.out.println("第二层密码输入错误,重新输入");
                }
                break;
           }
           System.out.println("第一层密码输入错误,重新输入");
       }

    }

}

结束语:经得住诱惑,耐得住寂寞。

原文地址:https://www.cnblogs.com/zdl9857/p/9527197.html

时间: 2024-07-30 01:45:08

Java基础增强:集合的嵌套案例的相关文章

java基础之集合Set

1.集合 当向集合Set中增加对象时,首先集合计算要增加对象的hashcode,根据该值得到一个位置用来存放当前的对象,当在该位置没有一个对象存在的时候,集合set认为该对象在集合中不存在,直接增加进去.如果在该位置有一个对象存在,接着将准备增加到集合中的的对象与该位置上的对象进行equals比较,若返回false,在进行一次散列,将该对象放到散列后计算出的新地址.若返回true,不会再将该对象增加到集合中 2.当重写equals方法时,必须要重写hashcode方法 如果一个类的两个对象,使用

java基础之集合List-ArrayList、LinkedList、Vector的区别

PS:本篇博客主要参考jdk的底层源码,而非自己动手写代码. 请问ArrayList.LinkedList.Vector的区别 ①ArrayList底层实际上是采用数组实现的(并且该数组的类型的Object类型的) ②如果jdk6,采用Array.copyOf()方法来生成一个新的数组,如果是jdk5,采用的是System.arraycopy()方法(当添加的数据量大于数组的长度时候) ③List list = newArrayList()时,底层会生成一个长度为10的数组来存放对象 ④Arra

黑马程序员——java基础 ArrayList集合基本方法演示

java基础 ArrayList集合基本方法演示 import java.util.ArrayList; import java.util.Iterator; public class ArrayListDemos { public static void main(String[] args) { // 创建一个新的容器 ArrayList al = new ArrayList(); al.add("abc1"); al.add("abc2"); al.add(&

javaweb &gt;_&lt; java基础增强 ①

javaweb_Ⅰjava基础增强——断点 ps:Bad version number   in .class file.             该错误 指eclipse运行环境低于编辑java版本. 双击左键设置断点, F5跳入方法中.step into F6跳过.step over F7跳出方法  .step return 查看变量值:右键watch. 跳到当前方法的最开始.drop to frame 跳到下一个断点 /结束应用程序. resume 清除断点breakpoint. 断点调试

JAVAWEB &gt;_&lt; JAVA基础增强 ②

javaweb_Ⅵjava基础增强——反射 学习框架的基础 反射:加载类,并解剖出类的各个组成部分. 加载类: ps: 获取下列有什么用 构造函数:原,创建对象完成对象初始化.用来创建对象 方法:原,完成某个功能.使用该方法 成员变量:原,封装数据.给字段封装数据 ①反射构造方法 // 解剖(反射类)构造函数并创建类的对象 @Test public void testss () throws Exception { // 先加载类,后解剖(反射) // public Person() Class

Java基础之 集合体系结构(Collection、List、ArrayList、LinkedList、Vector)

Java基础之 集合体系结构详细笔记(Collection.List.ArrayList.LinkedList.Vector) 集合是JavaSE的重要组成部分,其与数据结构的知识密切相联,集合体系就是对数据结构的封装 数组与集合的比较 数组:长度固定,可以存储基本数据类型,也能存储对象 集合:长度可变,只能存储对象类型(由于有包装类的存在,集合可以存储任何类型) 集合的体系结构 集合也叫容器,用于存储对象 我们根据不同的需求和不同的数据结构来对集合做了不同的抽象 Collection接口-公共

JAVA基础学习-集合三-Map、HashMap,TreeMap与常用API

一.Map简述 1.1.简述 public interface Map<K,V> 类型参数: K - 此映射所维护的键的类型 key V - 映射值的类型 value 该集合提供键--值的映射.key不能重复,一对对的存储方式 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值. 1.2.方法 嵌套类摘要 static interface Map.Entry<K,V> 映射项(键-值对). 方法摘要 void clear() 从此映射中移除所有映射关系(可选操

04、Java基础语法(循环嵌套、break、continue、方法、方法的重载、数组动态初始化)

复习: 流程控制语句 - 顺序结构 - 分支结构 - if-else - switch - 循环结构 - for - while - do...while 1.循环嵌套 2.控制循环的语句 3.方法 4.方法的重载 5.数组的动态初始化 1.循环嵌套 ctrl + alt + L 格式化代码 "\n"换行符 "\t"制表符 九九乘法表 for (int i = 1; i < 10; i++) { for (int j = 1; j <= i; j++)

JAVA基础之集合框架

集合框架(collections framework) 首先要明确,集合代表了一组对象(和数组一样,但数组长度不能变,而集合能).Java中的集合框架定义了一套规范,用来表示.操作集合,使具体操作与实现细节解耦. 其实说白了,可以把一个集合看成一个微型数据库,操作不外乎"增删改查"四种操作,我们在学习使用一个具体的集合类时,需要把这四个操作的时空复杂度弄清楚了,基本上就可以说掌握这个类了. 设计理念 主要理念用一句话概括就是:提供一套"小而美"的API.API需要对