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