JAVA集合框架Map特性及實(shí)例解析
一 Map特性:
1 Map提供一種映射關(guān)系,其中的元素是以鍵值對(duì)(key-value)的形式存儲(chǔ)的,能夠?qū)崿F(xiàn)根據(jù)key快速查找value;
2 Map中鍵值對(duì)以Entry類型的對(duì)象實(shí)例形式存在;
3 鍵,即key不可重復(fù),但是value值可以;
4 每個(gè)鍵最多只能映射一個(gè)值;
5 Map接口提供了分別返回key值集合、value值集合以及Entry(鍵值對(duì))集合的方法;
6 Map支持泛型,形式如:Map<K,V>
二 HashMap類:
1 HashMap是Map的一個(gè)重要實(shí)現(xiàn)類,也是最常用的,基于哈希表實(shí)現(xiàn);
2 HashMap中的Entry對(duì)象是無序排列的;
3 Key值和Value值都可以為null,但是HashMap中只能有一個(gè)Key值為null的映射(key值不可重復(fù));
示例:
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>(); /* * 新建學(xué)生到Map中 * */ public void addStudent(){ //先添加三個(gè)學(xué)生 Scanner console = new Scanner(System.in); int i = 0; while(i<3){ System.out.println("請(qǐng)輸入學(xué)生ID:"); String id = console.next(); Student s = students.get(id); if(s == null){ System.out.println("請(qǐng)輸入學(xué)生姓名:"); String name = console.next(); Student student = new Student(Integer.parseInt(id),name); students.put(id,student); System.out.println("添加了學(xué)生:"+student.id+"-"+student.name); i++; }else{ System.out.println("該ID已經(jīng)被占用"); continue; } } } /* * 試用HashMap的keySet方法 * * 順便遍歷Students * */ public void forEachStudents(){ Set<String> ks = students.keySet(); System.out.println("共有學(xué)生數(shù)量"+students.size()+"個(gè),具體如下:"); for(String key: ks){ Student student = students.get(key); if( student != null){ System.out.println("學(xué)生ID:"+student.id+"-學(xué)生姓名:"+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中添加某個(gè)對(duì)象無論添加多少次,最終只會(huì)保留一個(gè)該對(duì)象(的引用),并且,保留的是第一次添加的那個(gè) public Set<Course> course = new HashSet<Course>(); public Student(int id, String name){ this.id = id; this.name = name; } }
返回結(jié)果:
請(qǐng)輸入學(xué)生ID:
請(qǐng)輸入學(xué)生姓名:
劉備
添加了學(xué)生:1-劉備
請(qǐng)輸入學(xué)生ID:
請(qǐng)輸入學(xué)生姓名:
關(guān)羽
添加了學(xué)生:2-關(guān)羽
請(qǐng)輸入學(xué)生ID:
請(qǐng)輸入學(xué)生姓名:
張飛
添加了學(xué)生:3-張飛
共有學(xué)生數(shù)量3個(gè),具體如下:
學(xué)生ID:1-學(xué)生姓名:劉備
學(xué)生ID:2-學(xué)生姓名:關(guān)羽
學(xué)生ID:3-學(xué)生姓名:張飛
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java?ServletContext與ServletConfig接口使用教程
ServletConfig對(duì)象,叫Servlet配置對(duì)象。主要用于加載配置文件的初始化參數(shù)。我們知道一個(gè)Web應(yīng)用里面可以有多個(gè)servlet,如果現(xiàn)在有一份數(shù)據(jù)需要傳給所有的servlet使用,那么我們就可以使用ServletContext對(duì)象了2022-09-09Java實(shí)現(xiàn)給網(wǎng)站上傳圖片蓋章的方法
這篇文章主要介紹了Java實(shí)現(xiàn)給網(wǎng)站上傳圖片蓋章的方法,涉及java針對(duì)圖片的合成操作技巧,類似水印功能,需要的朋友可以參考下2015-07-07spring-security關(guān)于hasRole的坑及解決
這篇文章主要介紹了spring-security關(guān)于hasRole的坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09后端如何接收格式為x-www-form-urlencoded的數(shù)據(jù)
x-www-form-urlencoded格式是一種常見的HTTP請(qǐng)求數(shù)據(jù)格式,它將請(qǐng)求參數(shù)編碼為鍵值對(duì)的形式,以便于傳輸和解析,下面這篇文章主要給大家介紹了關(guān)于后端如何接收格式為x-www-form-urlencoded的數(shù)據(jù),需要的朋友可以參考下2023-05-05使用Java實(shí)現(xiàn)2048小游戲代碼實(shí)例
這篇文章主要介紹了使用Java實(shí)現(xiàn)2048小游戲代碼實(shí)例,2048 游戲是一款益智類游戲,玩家需要通過合并相同數(shù)字的方塊,不斷合成更大的數(shù)字,最終達(dá)到2048,游戲規(guī)則簡(jiǎn)單,但挑戰(zhàn)性很高,需要玩家靈活運(yùn)用策略和計(jì)算能力,本文將使用Java代碼實(shí)現(xiàn),需要的朋友可以參考下2023-10-10Spring Aop之AspectJ注解配置實(shí)現(xiàn)日志管理的方法
下面小編就為大家分享一篇Spring Aop之AspectJ注解配置實(shí)現(xiàn)日志管理的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-01-01Springboot集成minio實(shí)現(xiàn)文件存儲(chǔ)的實(shí)現(xiàn)代碼
MinIO?是一款基于Go語言的高性能對(duì)象存儲(chǔ)服務(wù),本文主要介紹了Springboot集成minio實(shí)現(xiàn)文件存儲(chǔ)的實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03Java 添加、刪除、格式化Word中的圖片步驟詳解( 基于Spire.Cloud.SDK for Java )
這篇文章主要介紹了Java 添加、刪除、格式化Word中的圖片( 基于Spire.Cloud.SDK for Java ),本文分步驟通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08