1. 程式人生 > 程式設計 >JAVA集合框架Map特性及例項解析

JAVA集合框架Map特性及例項解析

一  Map特性:

  1 Map提供一種對映關係,其中的元素是以鍵值對(key-value)的形式儲存的,能夠實現根據key快速查詢value;

  2 Map中鍵值對以Entry型別的物件例項形式存在;

  3 鍵,即key不可重複,但是value值可以;

  4 每個鍵最多隻能對映一個值;

  5 Map介面提供了分別返回key值集合、value值集合以及Entry(鍵值對)集合的方法;

  6 Map支援泛型,形式如:Map<K,V>

二  HashMap類:

  1 HashMap是Map的一個重要實現類,也是最常用的,基於雜湊表實現;

  2 HashMap中的Entry物件是無序排列的;

  3 Key值和Value值都可以為null,但是HashMap中只能有一個Key值為null的對映(key值不可重複);

示例:

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>();

  /*
  * 新建學生到Map中
  * */
  public void addStudent(){
    //先新增三個學生
    Scanner console = new Scanner(System.in);
    int i = 0;
    while(i<3){
      System.out.println("請輸入學生ID:");
      String id = console.next();
      Student s = students.get(id);
      if(s == null){
        System.out.println("請輸入學生姓名:");
        String name = console.next();
        Student student = new Student(Integer.parseInt(id),name);
        students.put(id,student);
        System.out.println("添加了學生:"+student.id+"-"+student.name);
        i++;
      }else{
        System.out.println("該ID已經被佔用");
        continue;
      }
    }
  }

  /*
  * 試用HashMap的keySet方法
  *
  * 順便遍歷Students
  * */
  public void forEachStudents(){
    Set<String> ks = students.keySet();
    System.out.println("共有學生數量"+students.size()+"個,具體如下:");
    for(String key: ks){
      Student student = students.get(key);
      if( student != null){
        System.out.println("學生ID:"+student.id+"-學生姓名:"+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;
  }

}

返回結果:

請輸入學生ID:
請輸入學生姓名:
劉備
添加了學生:1-劉備
請輸入學生ID:
請輸入學生姓名:
關羽
添加了學生:2-關羽
請輸入學生ID:
請輸入學生姓名:
張飛
添加了學生:3-張飛
共有學生數量3個,具體如下:
學生ID:1-學生姓名:劉備
學生ID:2-學生姓名:關羽
學生ID:3-學生姓名:張飛

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。