JAVA集合框架Map特性及实例解析

 更新时间:2020年04月04日 12:43:35   作者:冬至未霜  
这篇文章主要介绍了JAVA集合框架Map特性及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

一  Map特性:

  1 Map提供一种映射关系,其中的元素是以键值对(key-value)的形式存储的,能够实现根据key快速查找value;

  2 Map中键值对以Entry类型的对象实例形式存在;

  3 键,即key不可重复,但是value值可以;

  4 每个键最多只能映射一个值;

  5 Map接口提供了分别返回key值集合、value值集合以及Entry(键值对)集合的方法;

  6 Map支持泛型,形式如:Map<K,V>

二  HashMap类:

  1 HashMap是Map的一个重要实现类,也是最常用的,基于哈希表实现;

  2 HashMap中的Entry对象是无序排列的;

  3 Key值和Value值都可以为null,但是HashMap中只能有一个Key值为null的映射(key值不可重复);

示例:

package com.collection;

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

public class MapTest {

  public HashMap<String,Student> students = new HashMap<String,Student>();

  /*
  * 新建学生到Map中
  * */
  public void addStudent(){
    //先添加三个学生
    Scanner console = new Scanner(System.in);
    int i = 0;
    while(i<3){
      System.out.println("请输入学生ID:");
      String id = console.next();
      Student s = students.get(id);
      if(s == null){
        System.out.println("请输入学生姓名:");
        String name = console.next();
        Student student = new Student(Integer.parseInt(id),name);
        students.put(id,student);
        System.out.println("添加了学生:"+student.id+"-"+student.name);
        i++;
      }else{
        System.out.println("该ID已经被占用");
        continue;
      }
    }
  }

  /*
  * 试用HashMap的keySet方法
  *
  * 顺便遍历Students
  * */
  public void forEachStudents(){
    Set<String> ks = students.keySet();
    System.out.println("共有学生数量"+students.size()+"个,具体如下:");
    for(String key: ks){
      Student student = students.get(key);
      if( student != null){
        System.out.println("学生ID:"+student.id+"-学生姓名:"+student.name);
      }
    }
  }

  public static void main(String[] args){
    MapTest mt = new MapTest();
    mt.addStudent();
    mt.forEachStudents();
  }
}

其中Student类如下:

package com.collection;

import java.util.HashSet;
import java.util.Set;

public class Student {
  public int id;
  public String name;

  //set中添加某个对象无论添加多少次,最终只会保留一个该对象(的引用),并且,保留的是第一次添加的那个

  public Set<Course> course = new HashSet<Course>();

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

}

返回结果:

请输入学生ID:
请输入学生姓名:
刘备
添加了学生:1-刘备
请输入学生ID:
请输入学生姓名:
关羽
添加了学生:2-关羽
请输入学生ID:
请输入学生姓名:
张飞
添加了学生:3-张飞
共有学生数量3个,具体如下:
学生ID:1-学生姓名:刘备
学生ID:2-学生姓名:关羽
学生ID:3-学生姓名:张飞

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 一起来学习JAVA的运算符

    一起来学习JAVA的运算符

    这篇文章主要为大家详细介绍了JAVA的运算符,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • Java并发工具类之CountDownLatch详解

    Java并发工具类之CountDownLatch详解

    这篇文章主要介绍了Java并发工具类之CountDownLatch详解,CountDownLatch可以使一个获多个线程等待其他线程各自执行完毕后再执行,CountDownLatch可以解决那些一个或者多个线程在执行之前必须依赖于某些必要的前提业务先执行的场景,需要的朋友可以参考下
    2023-12-12
  • Java调用MySQL存储过程并获得返回值的方法

    Java调用MySQL存储过程并获得返回值的方法

    这篇文章主要介绍了Java调用MySQL存储过程并获得返回值的方法,实例分析了java实现MySQL存储过程的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • 详解SpringBoot注解读取配置文件的方式

    详解SpringBoot注解读取配置文件的方式

    这篇文章主要介绍了详解SpringBoot注解读取配置文件的方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • idea使用Vim的技巧大全分享

    idea使用Vim的技巧大全分享

    vim是一个高度可配置的文本编辑器,非常稳定,可以高效的创建任何文本、持久的、多级撤销树、支持数百种变成语言和格式、与许多工具集成,本文给大家分享了idea使用Vim的技巧大全,需要的朋友可以参考下
    2024-05-05
  • Python爬虫 12306抢票开源代码过程详解

    Python爬虫 12306抢票开源代码过程详解

    这篇文章主要介绍了Python爬虫 12306抢票开源代码过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • Java SpringBoot拦截器详解

    Java SpringBoot拦截器详解

    这篇文章主要介绍了Java SpringBoot拦截器的使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2021-10-10
  • 浅谈Java基准性能测试之JMH

    浅谈Java基准性能测试之JMH

    JMH是Java Microbenchmark Harness的简称,一个针对Java做基准测试的工具。想准确的对一段代码做基准性能测试并不容易,因为JVM层面在编译期、运行时对代码做很多优化,当代码块处于整个系统中运行时并不一定会生效,产生错误的基准测试结果,这个问题就是JMH要解决的
    2021-06-06
  • druid升级后sql监控页面为空白的解决

    druid升级后sql监控页面为空白的解决

    这篇文章主要介绍了druid升级后sql监控页面为空白的解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • SpringBoot使用Interceptor拦截器的实例

    SpringBoot使用Interceptor拦截器的实例

    这篇文章主要介绍了SpringBoot使用Interceptor拦截器的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03

最新评论