JAVA集合框架Map特性及实例解析
作者:冬至未霜 发布时间:2021-06-05 02:23:39
标签: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-学生姓名:张飞
来源:https://www.cnblogs.com/chengshan/p/12625459.html
0
投稿
猜你喜欢
- 前言数据驱动测试是相同的测试脚本使用不同的测试数据执行,测试数据和测试行为完全分离。数据驱动是做自动化测试中很重要的一部分,数据源的方案也是
- import java.io.File;import java.util.ArrayList;public class FileTest {
- 首先给出代码和输出://import java.sql.DriverManager;//import java.sql.SQLExcepti
- 一、@RestController 注解在 Spring Boot 中的 Controller 中使用 @RestController 注解
- 本文实例为大家分享了java使用poi导出图片到Excel的具体代码,供大家参考,具体内容如下代码实现Controller/** * 导出志
- 介绍前面一章说了AbstractApplicationContext中的refresh方法中的invokeBeanFactoryPostPr
- 本文实例讲述了Hibernate批量处理海量数据的方法。分享给大家供大家参考,具体如下:Hibernate批量处理海量其实从性能上考虑,它是
- # 前言之前在学习C语言的时候,做过一个三子棋的小游戏,最近开始学习Java,就想着能不能用Java再把之前的练习重新实现一边,既然有这个想
- 使用foreach循环的坑我们首先看一段MyBatis中使用foreach循环的sql:SELECT * FROM table where
- java实现接口签名为了保证数据传输的安全性,跟其他系统进行数据交互时,双方应该约定好密钥,把数据进行加密,接口签名,这样双方调用接口时,验
- 享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供
- maven没有打包xml文件的问题最近使用maven带管理项目,采用SSM的技术栈,在配置好一些配置文件,打包部署到tomcat上,出现没有
- Mybatis typeAlias配置1.定义别名<typeAliases> <ty
- 路径分隔符:Windows下是“\”unix|linux下是“/”考虑到程序的可移植性,创建文件时建议大家选用"/",因
- 最近开发项目中,有个在屏幕上任意拖动的悬浮窗功能,其实就是利用 WindowManager的api来完成这个需求,具体的实现的功能如下:1.
- 问题描述:idea输入中文,没输入几个拼音就好像自动回车,有时得到几个字母,然后就不能输入拼音了。遇到这个情况就导致输入中文特别困难,可以采
- 功能函数// 图像旋转void Rotate(const cv::Mat &srcImage, cv::Mat &dstIm
- 若代理类在程序运行前就已经存在,那么这种代理方式被成为 静态代理 ,这种情况下的代理类通常都是我们在Java代码中定义的。 通常情况下, 静
- 在linux主机部署Eureka高可用方案的时候,发现注册到服务中心的服务IP是随机的,由于主机的网卡是多个,随机的IP并不是自己想要的,上
- static和@Component遇到的bug今天在编写util的时候,发现不能调用到工具类里面的方法,转眼一看,原来不是工具类里面的方法是