HashMap的遍历方法_ʚVVcatɞ的博客-程序员宅基地

技术标签: Java  

使用工具

IDEA2018.2

使用说明

  1. 使用迭代器,即创建Iterator对象,Iterator是一个接口,也有泛型
  2. hasNext方法判断是否已经遍历完,
  3. next方法取当前遍历的对象
  4. HashMap用keySet()方法获得键的Set集合
  5. values()方法获得值的Set集合
  6. entrySet()方法获得键值对的Set集合

代码示例

Student.java
package com.vvcat;

/**
 * @Author ꧁ʚVVcatɞ꧂
 * @Date 2019/10/13 19:37
 * @Version 1.0
 **/
public class Student {
    
    private Integer id;
    private String name;
    private String sex;
    private Integer age;

    public Student() {
    

    }

    public Integer getId() {
    
        return id;
    }

    public void setId(Integer id) {
    
        this.id = id;
    }

    public String getName() {
    
        return name;
    }

    public void setName(String name) {
    
        this.name = name;
    }

    public Student(Integer id, String name) {
    
        this.id = id;
        this.name = name;
    }


    public Student(Integer id, String name, String sex, Integer age) {
    
        this.id = id;
        this.name = name;
        this.sex = sex;
        this.age = age;
    }

    public String getSex() {
    
        return sex;
    }

    public void setSex(String sex) {
    
        this.sex = sex;
    }

    public Integer getAge() {
    
        return age;
    }

    public void setAge(Integer age) {
    
        this.age = age;
    }

    @Override
    public String toString() {
    
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                ", age=" + age +
                '}';
    }
}
HashMap .java
package com.vvcat;

import java.util.*;

/**
 * @Author ꧁ʚVVcatɞ꧂
 * @Date 2019/10/13 19:39
 * @Version 1.0
 **/

public class HashMap {
    
    public static void main(String[] args) {
    
        //实例化3个学生
        Student stu1 = new Student(1, "张三","男",20);
        Student stu2 = new Student(2, "李四","男",21);
        Student stu3 = new Student(3, "赵五","男",22);
        // 实例化HashMap用于保存学生
        java.util.HashMap<Integer, Student> map = new java.util.HashMap<Integer, Student>();

        //建立学号与学生的映射关系
        map.put(stu1.getId(),stu1);
        map.put(stu2.getId(),stu2);
        map.put(stu3.getId(),stu3);

        // 遍历方法1.通过Map.keySet遍历key和value(经常使用,二次取值)
        Set<Integer> keys = map.keySet();
        Iterator<Integer> it1 = keys.iterator();
        System.out.println("遍历方法1,通过keySet遍历key和value获得键集合 ");
        for (Integer key : map.keySet()) {
    
            System.out.println("key = "+ key + " and value= " + map.get(key));
        }
        while (it1.hasNext()){
    
            Student st = map.get(it1.next());
            System.out.println("学号:" + st.getId() + "\t" + "姓名:" + st.getName() + "\t" + "性别:" + st.getSex() + "\t" + "年龄:" + st.getAge());
        }
        System.out.println("---------------------------");

        // 遍历方法2.通过Map.values()遍历所有的value,但不能遍历key
        Collection<Student> values = map.values();
        Iterator<Student> it2 = values.iterator();
        System.out.println("遍历方法2,通过values获得值集合");
        for (Student stu : map.values()) {
    
            System.out.println("value= " + stu);
        }
        while(it2.hasNext()){
    
            Student next = it2.next();
            System.out.println("学号:" + next.getId() + "\t"+ "姓名:" + next.getName()+ "\t" + "性别:" + next.getSex() + "\t"+ "年龄:" + next.getAge());
        }

        System.out.println("---------------------------");

        // 遍历方法3.通过Map.entrySet使用iterator遍历key和value:
        Set<Map.Entry<Integer, Student>> kys = map.entrySet();
        Iterator<Map.Entry<Integer, Student>> it3 = kys.iterator();
        System.out.println("遍历方法3,通过entrySet使用iterator遍历key和value获得键值对");
        while(it3.hasNext()){
    
            Student st = it3.next().getValue();
            System.out.println("学号:" + st.getId() + "\t" + "姓名:" + st.getName()+ "\t" + "性别:" + st.getSex()+ "\t" + "年龄:" + st.getAge());
        }
        System.out.println("---------------------------");

        //遍历方法4:通过Map.entrySet遍历key和value(推荐容量大时使用)
        System.out.println("通过Map.entrySet遍历key和value");
        for (Map.Entry<Integer, Student> entry : map.entrySet()) {
    
            Student st = entry.getValue();
            System.out.println("学号:" + entry.getKey()+ "\t" + "姓名:" + st.getName()+ "\t" + "性别:" + st.getSex()+ "\t" + "年龄:" + st.getAge());
        }
    }
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_44989881/article/details/102538683

智能推荐

再见,科比-程序员宅基地

斯特恩在天堂用状元签选中了科比,年少时的梦,再也不见!

List.addAll() 与=的区别面试题-程序员宅基地

再次被面试问到 回答错了,所以记录一下public class Person { public int age; public String name; public Person(String name, int age){ this.name = name; this.age = age; } public in...

解决Navicat测试连接时出现cannot create oci environment问题-程序员宅基地

这个问题的原因是navicat不能创建oci的环境。

ubuntu 安装ssh-server 并配置远程登陆密码_ubuntu openssh 设置密码-程序员宅基地

1. 安装ssh安装:apt-get install openssh-server检查ssh安装包:dpkg -l | grep ssh查看ssh服务是否启动:ps -e |grep ssh2.修改ssh配置文件修改root密码:passwd rootssh-server配置文件位于/etc/ssh/sshd_config,在这里可以定义SSH的服务端口,默认端口是22,你..._ubuntu openssh 设置密码

数据库软删除-程序员宅基地

有时候想在web里显示删除,但是数据库里不删除.可以在建表时加一个字段 IS_DEL=0删除时把字段更改我IS_DEL=1下面时ssm框架里的一个例子 <update id="delete" parameterType="pd"> update "CHECK_COMBINATIONMX" set ...

mysql批量导入txt文件_mysql批量导入txt文件数据-程序员宅基地

1、用java代码造好数据,这里就用1000条package Utils;import java.io.BufferedWriter;import java.io.FileWriter;import java.io.IOException;public class CreateMysqlData {/*** @param args* @throws IOException*/public stat..._mysql批量导入txt文本数据

随便推点

为什么需要了解ASP.NET Core MVC的前世今生_mvc 先出还是 asp.net-程序员宅基地

ASP.NET Core MVC 是一个微软公司的web应用开发框架, 结合了MVC架构的高效简洁, 敏捷开发的思想和技术, 以及.NET平台最优秀的部分. 在这一章中, 你将了解到微软为什么要创建ASP.NET Core MVC, 将它和前辈以及替代品进行比较, 最后浏览ASP.NET Core MVC的新特性.了解ASP.NET Core MVC的历史最初的ASP.NET诞生于2002年, 当时微软想要保持传统的桌面应用开发的霸主地位, 将因特网视为潜在威胁. 图1-1展示了当时微软的技术栈._mvc 先出还是 asp.net

用c语言实现非递归求第n个斐波那契数(Fibonacci)。(不考虑溢出)_c语言斐波那契数无数据溢出-程序员宅基地

求第n个斐波那契数。(不考虑溢出)int fib(int n){int result;int pre_result;int next_older_result;result = pre_result = 1;while (n > 2){n -= 1;next_older_result = pre_result;pre_result = result;result = ..._c语言斐波那契数无数据溢出

黑马程序员05_正则表达式-程序员宅基地

------- android培训、java培训、期待与您交流! ----------正则表达式:符合一定规定的表达式。作用:用于专门操作字符串。特点:实际上就是一些特定的符号来表示一些代码操作。好处:简化书写,提高开发效率。弊端:符号定义越多,正则越长,阅读性越差。下面是正则表达式的一些规则。[0-9]可以用\d来代替{0,1}可以用?代替

java-net-php-python-jspm米兰酒店管理系统计算机毕业设计程序-程序员宅基地

java-net-php-python-jspm米兰酒店管理系统计算机毕业设计程序。springboot基于springboot的家居销售网站。springboot基于SpringBoot动漫电影网站。springboot校园二手电动车交易平台的设计与实现。ssm基于SSM的个人连锁民宿信息管理系统的设计与开发。springboot高校毕业生就业管理系统。springboot百姓点评网的设计与实现。

Lintcode 上一个排列-程序员宅基地

给定一个整数数组来表示排列,找出其上一个排列。 注意事项排列中可能包含重复的整数您在真实的面试中是否遇到过这个题? Yes样例给出排列[1,3,2,3],其上一个排列是[1,2,3,3]给出排列[1,2,3,4],其上一个排列是[4,3,2,1]标签 LintCode 版权所有 排列

小程序 | 微信小程序实现倒计时(节日校庆日等倒计时)_ParallelLight的博客-程序员宅基地

wxml<!-- 标题栏 开始 --><view class="index_title"> <view>距离 <text>100周年</text> 校庆日还有 <text>{{xiaoqing_days}}</text> 天</view> <view>距离 <text>{{kaoyan_year}}</text> 年考研还有 <text>{{kaoya.