Java集合之-Map集合

通过以下实例来体验Map的具体用法:

  1. 通过Map

创建一个Student类

public class Student
{
    public String id;
    public String name;
    public Set<Course> courses;//Set之前测试用到,这里没有用到

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Student(String id, String name) {
        this.id = id;
        this.name = name;

        courses=new HashSet<Course>();
    }
}

创建一个MapTest测试类

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

/**
 * Created by Administrator on 2017/4/1/001.
 */

public class MapTest
{
    public Map<String,Student> mStudentMap;
    public  Scanner mScanner;
    public MapTest()
    {
        //初始化Map对象
        this.mStudentMap=new HashMap<String,Student>();
        mScanner=new Scanner(System.in);
    }


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

        mapTest.testModefy();
        mapTest.testEntrySet();


    }

     /*
    * 测试添加方法
    * */
    public void testPut()
    {
        int i=0;
        while(i<3)
        {
            System.out.println("请输入学生ID:");
            String ID=mScanner.next();
            Student st=mStudentMap.get(ID);
            if(st==null)
            {
                //提示输入学生姓名
                System.out.println("请输入学生姓名:");
                String name=mScanner.next();
                //创建新的学生对象
                Student newStudent=new Student(ID,name);
                //放入HashMap中
                mStudentMap.put(ID,newStudent);
                System.out.println("成功添加学生:"+mStudentMap.get(ID).getName());

                i++;
            }else
            {
                System.out.println("该学生ID已被占用");
                continue;//继续执行循环
            }
        }
    }

    /*
    * 测试Map的keySet方法,返回的是
    * Map中的所有“键”的Set集合
    *
    * */
    public void testKeySet()
    {
        //通过keySet方法,返回Map中的所有“键”的Set集合
        Set<String> keySet=mStudentMap.keySet();
        for (String stuId:keySet
             ) {
            //通过每个键获得对应的value值
            Student st=mStudentMap.get(stuId);
            //判断对象是否为空
            if(st!=null)
            {
                System.out.println("学生:"+st.getName());
            }
        }
    }

    /*
    * 测试删除Map中的映射
    *
    * */
    public void testRemove()
    {
        while (true)
        {
            System.out.println("请输入待删除的学生ID:");
            String id=mScanner.next();
            Student st=mStudentMap.get(id);
            if(st==null)
            {
                System.out.println("该ID不存在");
                continue;
            }

            mStudentMap.remove(id);
            System.out.println("成功删除学生:"+st.name);
            break;
        }
    }

    /*
    * 通过entrySet方法来遍历Map
    *
    * */
    public void testEntrySet()
    {
        //通过entrySet方法,返回Map中的所有键值对
        Set<Map.Entry<String,Student>> entrySet=mStudentMap.entrySet();
        for(Map.Entry<String,Student> entry:entrySet)
        {
            System.out.println("取得键:"+entry.getKey());
            System.out.println("对应的值为:"+entry.getValue().getName());
        }
    }

    /*
    * 测试修改方法
    *
    * */
    public void testModefy()
    {
        //提示输入要修改的学生ID
        System.out.println("请输入要修改的学生ID:");
        while (true)
        {
            String stuID=mScanner.next();
            //从mStudentMap中查找该学生ID对应的学生对象
            Student st=mStudentMap.get(stuID);
            if(st==null)
            {
                System.out.println("该ID不存在!重新输入");
                continue;
            }

            //提示当前对象对应的学生对象的姓名
            System.out.println("当前该学生ID,所对应的学生为:"+st.getName());

            //提示输入新的学生姓名,来修改已有的映射
            System.out.println("请输入新的学生姓名:");
            String name=mScanner.next();
            Student student=new Student(stuID,name);
            mStudentMap.put(stuID,student);
            System.out.println("修改成功!");
            break;
        }
    }


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值