程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> Java—集合框架Map,java框架map

Java—集合框架Map,java框架map

編輯:JAVA綜合教程

Java—集合框架Map,java框架map


  • Map接口

  Map提供了一種映射關系,其中的元素是以鍵值對(key-value)的形式存儲的,key和value可以是任意類型的對象,能夠實現根據key快速查找value。

  Map中的鍵值對以Entry類型的對象實例形式存在。

  鍵(key值)不可重復,value值可以。

  每個鍵最多只能映射到一個值,一個值可以對應多個鍵。

  Map接口提供了分別返回key值集合、value值集合以及Entry(鍵值對)集合的方法。Entry類是Map的一個內部類。

  Map支持泛型,形式如:Map<Key值類型,V值類型>

  • HashMap類

  HashMap是Map的一個重要實現類,也是最常用的,基於哈希表實現。

  HashMap中的Entry對象是無序排列的。

  Key值和value值都可以為null,但是一個HashMap只能有一個key值為null的映射

  MapTest.java

package com.test.collection;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;

public class MapTest {
    public Map<String, Student> students;
    
    public MapTest() {
        this.students = new HashMap<String, Student>();
    }
    
    /**
     * 添加
     */
    public void testPut(){
        Scanner console = new Scanner(System.in);
        for (int i = 0; i < 3; i++) {
            System.out.println("輸入學生ID:");
            String studentId = console.next();
            //判斷該ID是否被占用
            Student st = students.get(studentId);
            if (st == null) {
                //提示輸入學生姓名
                System.out.println("輸入學生姓名:");
                String studentName = console.next();
                //創建學生對象
                Student newStudent = new Student(studentId, studentName);
                //通過調用students的put方法,添加ID-學生映射
                students.put(studentId, newStudent);
                System.out.println("成功添加學生:" + students.get(studentId).name);
            } else {
                System.out.println("該學生ID被占用");
                continue;
            }
        }
    }
    /**
     * 通過keySet方法遍歷Map
     */
    public void testKeySet() {
        //通過keySet方法,返回Map中所有“鍵”的Set集合
        Set<String> keySet = students.keySet();
        //獲得students的容量
        System.out.println("總共有" + students.size() + "個學生");
        //遍歷keySet,取得每一個鍵,再調用get方法取得每一個鍵對應的value
        for (String stuId : keySet) {
            Student st = students.get(stuId);
            if (st != null) {
                System.out.println("學生:" + st.name);
            }
        } 
    }
    /**
     * 刪除
     */
    public void testRemove() {
        Scanner console = new Scanner(System.in);
        while (true) {
            System.out.println("請輸入要刪除學生的ID:");
            String studentId = console.next();
            Student st = students.get(studentId);
            if (st == null) {
                System.out.println("該學生ID不存在");
                continue;
            }
            students.remove(studentId);
            System.out.println("成功刪除學生:" + st.name);
            break;
        }
    }
    /**
     * 通過entrySet方法遍歷Map
     */
    public void testEntrySet() {
        Set<Entry<String, Student>> entrySet = students.entrySet();
        System.out.println("總共有" + students.size() + "個學生");
        for (Entry<String, Student> entry : entrySet) {
            System.out.println("key值為:" + entry.getKey());
            System.out.println("對應的value為:" + entry.getValue().name);
        }
    }
    /**
     * 修改
     */
    public void testModify() {
        System.out.println("請輸入要修改的學生ID");
        Scanner console = new Scanner(System.in);
        while (true) {
            String studentId = console.next();
            Student st = students.get(studentId);
            if (st == null) {
                System.out.println("該學生ID不存在");
                continue;
            }
            System.out.println("當前學生ID,所對應的學生為" + st.name);
            System.out.println("請輸入新的學生的姓名:");
            String studentName = console.next();
            students.put(studentId, new Student(studentId, studentName));
            System.out.println("修改成功");
            break;
        }
    }

    public static void main(String[] args) {
        MapTest mt = new MapTest();
        mt.testPut();
        mt.testKeySet();
        mt.testRemove();
        mt.testEntrySet();
        mt.testModify();
        mt.testEntrySet();
    }
}

  執行結果:

輸入學生ID:
1
輸入學生姓名:
Tom
成功添加學生:Tom
輸入學生ID:
2
輸入學生姓名:
Jack
成功添加學生:Jack
輸入學生ID:
3
輸入學生姓名:
Lucy
成功添加學生:Lucy
總共有3個學生
學生:Tom
學生:Jack
學生:Lucy
請輸入要刪除學生的ID:
12
該學生ID不存在
請輸入要刪除學生的ID:
3
成功刪除學生:Lucy
總共有2個學生 key值為:1 對應的value為:Tom key值為:2 對應的value為:Jack

 請輸入要修改的學生ID
 2
 當前學生ID,所對應的學生為Jack
 請輸入新的學生的姓名:
 Lisa
 修改成功
 總共有2個學生
 key值為:1
 對應的value為:Tom
 key值為:2
 對應的value為:Lisa

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved