《JAVA集合中的Map接口》

本文介绍了一个使用Java实现的学生信息管理系统,系统通过Map接口管理学生信息,支持学生信息的增删查改等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先定义了一个课程类,里边放一些有关课程的属性和方法

package Chen_collection;

/*

 * 课程类

 */

 

public classCourse {

    private String id;

    private String name;

    public void Set_id(String i){

        id=i;

    }

    public void Set_name(String j){

        name=j;

    }

    public String get_id(){

        return id;

    }

    public String get_name(){

        return name;

    }

    public Course(String i,String n){

        id=i;

        name=n;

    }

    public Course(){

       

    }

}

然后定义了一个学生类,里边存放学生的一些属性和方法

package Chen_collection;

import java.util.Set;

import java.util.HashSet;

public class Student {

         privateString id;

         privateString name;

         publicSet<Course> courses;

         publicString get_id(){

                   returnid;

         }

         publicString get_name(){

                   returnname;

         }

         publicStudent(String i,String n){

                   id=i;

                   name=n;

                   courses=newHashSet<Course>();

         }

}

然后下边就是同过Map接口实现对学生进行增、删、查、改

package Chen_collection;

 

import java.util.HashMap;

import java.util.Map;

import java.util.Map.Entry;

import java.util.Scanner;

import java.util.Set;

 

/*

 * Map接口提供了一种映射关系,其中的元素是以键值对(key-value)的形式存储的,能够实现根据key

 

快速查找value

Map中的键值对以Entry类型的对象实例形式存在。

键值对不可重复,value值可以(就比如说,一个人可以有多种职位,职位就是key而这些职位都指同一

 

个人,这个人就是value

每个键最多只能映射到一个值(也就是这些键不能重复)

Map接口提供了分别返回key值集合、value值集合以及Entry(键值对)集合的方法

Map支持泛型,形式如:Map<K,V>(K代表key,V代表value)

 

HashMapMap接口的一个非常重要的实现类,基于哈希表实现的

HashMap中的Entry对象是无序排列的

Key值和value值都可以为null,但是一个HashMap中只能有一个key值为null的映射(key值不可重复)

 

案例功能说明

通过Map<String,Student>进行学生信息管理,其中key为学生ID,value为学生对象

通过键盘输入学生信息

对集合中的学生信息进行增、删、查、改

 */

 

public classMapTest {

    //用来承装学生类型对象

    publicMap<String,Student>students;

    /*

     * 在构造器中初始化students属性

     */

    public MapTest(){

        students=newHashMap<String,Student>();

    }

    /*

     * 测试添加:

     * 添加学生ID,判断是否被占用,若未被占用,则输入姓名,创建新学生对象,并且添加到students中去

     */

    public void Put(){

        //创建一个Scanner对象,用来接收输入的学生的ID和姓名

        Scannerconsole=new Scanner(System.in);

        int i=0;

        while(i<3){

            System.out.println("请输入学生的ID");

            StringID=console.next();

            //判断这个ID是否已经被占用了

            Studentst=students.get(ID);

            if(st==null){

                //提示输入学生姓名

                System.out.println("请输入学生姓名:");

                Stringname=console.next();

                //创建新的学生对象

                StudentnewStudent=new Student(ID,name);

                //通过调用studentsput方法,添加ID--学生映射

                students.put(ID,newStudent);

                System.out.println("成功添加学生:"+students.get(ID).get_name());

                i++;

            }else{

                System.out.println("该学生的ID已经被占用");

                continue;

            }

        }

    }

    /*

     * 测试MapkeySet方法

     */

    public void testKeySet(){

        //通过keySet方法,返回Map中所有""Set集合

        Set<String>keySet=students.keySet();

        //取得学生的容量

        System.out.println("总共有"+students.size()+"个学生");

        //遍历keySet,取得每一个键,再调用get方法取得每一个键的value

        for(String stuID:keySet){

            Studentst=students.get(stuID);

            if(st!=null){

                System.out.println("学生:"+st.get_name());

            }

        }

    }

    /*

     * 测试删除Map中已有的映射   

     */

    public void testRemove(){

        //获取从键盘输入的待删除的学生的ID字符串

        Scannerconsole=new Scanner(System.in);

        while(true){

            //提示用户输入要删除的学生的ID

            System.out.println("请输入要删除的学生的ID");

            StringID=console.next();

            //判断该ID是否有对应的学生类对象

            Studentst=students.get(ID);

            if(st==null){

                System.out.println("输入的ID并不存在");

                continue;

            }

            students.remove(ID);

            System.out.println("成功删除学生:"+st.get_name());

            break;

        }

    }

    /*

     * 通过entrySet方法来达到遍历Map的方法

     */

    public void testEntrySet(){

        //通过entrySet方法,返回Map中所有键值对的集合

        Set<Entry<String,Student>>entrySet=students.entrySet();

        for(Entry<String,Student>entry:entrySet){

            System.out.println("取得键:"+entry.getKey());

            System.out.println("对应的值为:"+entry.getValue().get_name());

        }

    }

    /*

     * 利用put方法修改Map中已有的映射

     */

    public void testMobify(){

        System.out.println("输入需要修改的学生的ID:");

        Scannerconsole=new Scanner(System.in);

        while(true){

            StringstuID=console.next();

            //students中查找是否有该学生ID对应的映射

            Studentstudent=students.get(stuID);

            if(student==null){

                System.out.println("Id不存在,请重新输入");

                continue;

            }

            System.out.println("当前Id所对应的学生为:"+student.get_name());

            System.out.println("请输入新的学生的姓名:");

            Stringname=console.next();

            StudentnewStudent=new Student(stuID,name);

            students.put(stuID, newStudent);//其实就是用新输入的ID将原来的ID覆盖了而已

            System.out.println("修改成功");

            break;

        }

       

    }

    public static void main(String[] args) {

        // TODO Auto-generated method stub

        MapTestT=new MapTest();

        T.Put();

        T.testKeySet();

        T.testRemove();

        T.testEntrySet();

        T.testMobify();

        T.testEntrySet();

    }

 

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值