Java集合框架(中)
来源:互联网 发布:时间序列数据回归分析 编辑:程序博客网 时间:2024/06/07 02:33
Map和HashMap
Map接口:
- 在了解Map接口之前,先要明确映射的概念:设A、B是两个非空集合,如果存在一个法则f,使得对A中的每个元素a,按法则f,在B中有唯一确定的元素b与之对应,则称f为从A到B的映射,记作f:A→B。
- Map提供了一种映射关系,其中的元素是以键值对Key—Value的形式存储的,能够实现根据Key快速查找Value
- Map中的键值对以Entry类型的对象实例形式存在
- 键(Key)不可以重复,值(Value)可以重复
- 每个键最多只能映射到一个值
- Map接口提供了分别返回Key值集合,Value值集合以及Entry(键值对)集合的方法
- Map支持泛型,形式如Key—Value
HashMap类:
- HashMap是Map一个重要实现类,也是最常用的,基于哈希表实现
- HashMap中的Entry对象是无序排列的
- Key与Value都可以为null,但是一个HashMap只能有一个Key为null的映射(Key不可以重复)
Map增删改查(MapTest.java):
package com.imooc.collection;import java.util.HashMap;import java.util.Map;import java.util.Map.Entry;import java.util.Scanner;import java.util.Set;public class MapTest { public Map<String,Student> students; public MapTest(){ this.students = new HashMap<String, Student>(); } public void testPut(){//往Map中添加元素 Scanner sc = new Scanner(System.in); for(int i=0;i<3;i++){ System.out.println("请输入学生id:"); String id = sc.next(); //判断该id是否被占用 //Map的get(Key)方法,如果存在,返回相应的Value;如果不存在,返回一个空对象 Student stu = students.get(id); if(stu==null){ System.out.println("输入学生姓名以创建学生:"); String name = sc.next(); Student newStu = new Student(id,name); students.put(id, newStu); //Map的put(Key,Value)方法,将键值对加入到Map中 System.out.println("成功添加学生:"+students.get(id).name); } else{ System.out.println("该学生id已被占用!"); } } } public void testKeySet(){//遍历查询Map //Map的keySet()方法,返回Map中所有键(Key)的Set集合 Set<String> keySet = students.keySet(); System.out.println("总共有"+students.size()+"个学生"); for(String stuId:keySet){//遍历查询keySet Student stu = students.get(stuId); if(stu!=null){ System.out.println("学生:"+stu.name); } } } public void testRemove(){ //删除Map中已有映射(键值对) Scanner sc = new Scanner(System.in); while(true){ System.out.println("请输入要删除的学生id:"); String id = sc.next(); Student stu = students.get(id); if(stu==null){ System.out.println("该学生id不存在"); continue; } //Removes the mapping for a key from this map if it is present students.remove(id);//Map的remove(Key)方法,删除已有键值对 System.out.println("成功删除学生:"+stu.name); break; } } public void testEntrySet(){ //Map的entrySet()方法,返回Map中所有键值对的Set集合 //Entry是Map中的内部类,且本身就带有泛型 Set<Entry<String,Student>> entrySet = students.entrySet(); for(Entry<String,Student> entry:entrySet){ System.out.println("取得键:"+entry.getKey()); System.out.println("对应的值为:"+entry.getValue().name); } } //利用Map的put()方法修改Map中已有的映射(键值对) public void testModify(){ System.out.println("请输入要修改的学生id:"); Scanner sc = new Scanner(System.in); while(true){ String id = sc.next(); Student stu = students.get(id); if(stu==null){ System.out.println("该id不存在,请重新输入!"); continue; } System.out.println("当前id所对应学生的姓名为:"+stu.name); System.out.println("请输入新的学生姓名:"); String name = sc.next(); Student newStu = new Student(id,name);//新建学生对象 students.put(id, newStu); System.out.println("修改成功!"); break; } } public static void main(String[] args){ MapTest mt = new MapTest(); mt.testPut(); mt.testKeySet(); mt.testRemove(); mt.testEntrySet(); mt.testModify(); mt.testEntrySet(); }}
运行结果:
请输入学生id:
1
输入学生姓名以创建学生:
Tom
成功添加学生:Tom
请输入学生id:
2
输入学生姓名以创建学生:
Jack
成功添加学生:Jack
请输入学生id:
4
输入学生姓名以创建学生:
Kings
成功添加学生:Kings
总共有3个学生
学生:Tom
学生:Jack
学生:Kings
请输入要删除的学生id:
3
该学生id不存在
请输入要删除的学生id:
1
成功删除学生:Tom
取得键:2
对应的值为:Jack
取得键:4
对应的值为:Kings
请输入要修改的学生id:
4
当前id所对应学生的姓名为:Kings
请输入新的学生姓名:
Hill
修改成功!
取得键:2
对应的值为:Jack
取得键:4
对应的值为:Hill
1 0
- Java集合框架(中)
- Java集合框架(中)
- Java学习之集合框架(中)
- Java中list集合框架
- Java中set集合框架
- Java中map集合框架
- Java集合(一)---Java集合框架
- java集合框架中HashMap源码(基于JDK1.6)
- java集合框架中Hashtable源码(基于JDK1.6)
- java集合框架源码学习目录(持续更新中)
- 9、Java入门—集合框架(中)
- 第十五章 JAVA中的集合框架(中)Map
- java集合框架(map集合)
- Java基础--集合框架(Map集合)
- java集合框架(1、集合介绍)
- Java集合:集合框架
- 【黑马程序员】java中----------Collection集合框架
- JAVA中为什么要使用集合框架
- python3学习之路(1)
- Http 协议建立连接的方式
- R cannot be resolved to a variable
- 十六进制
- C++转换构造函数和类型转换函数
- Java集合框架(中)
- Java Web中的Action、Dao、Service、Model
- Yii 1.1: Increasing AR performance in connections with Oracle
- iOS多线程编程技术之NSThread、Cocoa NSOperation、GCD
- 软引用SoftReference
- js-QQ三方登陆
- jenkins maven,svn 安装使用
- Android获取Ip地址
- 移动数据统计分析组件评