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ì)象是無(wú)序排列的;
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ì)象無(wú)論添加多少次,最終只會(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)文章
一起來(lái)學(xué)習(xí)JAVA的運(yùn)算符
這篇文章主要為大家詳細(xì)介紹了JAVA的運(yùn)算符,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-03-03
Java并發(fā)工具類之CountDownLatch詳解
這篇文章主要介紹了Java并發(fā)工具類之CountDownLatch詳解,CountDownLatch可以使一個(gè)獲多個(gè)線程等待其他線程各自執(zhí)行完畢后再執(zhí)行,CountDownLatch可以解決那些一個(gè)或者多個(gè)線程在執(zhí)行之前必須依賴于某些必要的前提業(yè)務(wù)先執(zhí)行的場(chǎng)景,需要的朋友可以參考下2023-12-12
Java調(diào)用MySQL存儲(chǔ)過程并獲得返回值的方法
這篇文章主要介紹了Java調(diào)用MySQL存儲(chǔ)過程并獲得返回值的方法,實(shí)例分析了java實(shí)現(xiàn)MySQL存儲(chǔ)過程的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07
druid升級(jí)后sql監(jiān)控頁(yè)面為空白的解決
這篇文章主要介紹了druid升級(jí)后sql監(jiān)控頁(yè)面為空白的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06
SpringBoot使用Interceptor攔截器的實(shí)例
這篇文章主要介紹了SpringBoot使用Interceptor攔截器的相關(guān)知識(shí),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03

