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并發(fā)工具類之CountDownLatch詳解
這篇文章主要介紹了Java并發(fā)工具類之CountDownLatch詳解,CountDownLatch可以使一個獲多個線程等待其他線程各自執(zhí)行完畢后再執(zhí)行,CountDownLatch可以解決那些一個或者多個線程在執(zhí)行之前必須依賴于某些必要的前提業(yè)務(wù)先執(zhí)行的場景,需要的朋友可以參考下2023-12-12
Java調(diào)用MySQL存儲過程并獲得返回值的方法
這篇文章主要介紹了Java調(diào)用MySQL存儲過程并獲得返回值的方法,實例分析了java實現(xiàn)MySQL存儲過程的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-07-07

