zoukankan      html  css  js  c++  java
  • 4.23Java Map接口

    4.23Java Map接口

    Map的概念

    用来存储"Key(键)-Value(值对)"的

    是一个接口

    特点:

    • 通过键来标识---通过键对象找值对象---与数组的索引不同的是我们的Key可以是任意的对象(key、自定义对象...)

    • 键对象不能重复

    Map接口的实现类:

    • HashMap

    • TreeMap

    • HashTable

    • Properies

    • ...

    Map接口中常用的方法

    方法说明
    Object put(Object key, Object value) 存放键值对
    Object get(Object key) 通过键对象查找值得到值对象
    Object remove(Object key) 删除键对象对应的键值对
    boolean containsKey(Object key) Map容器中是否包含键对象对应的键值对
    boolean containsValue(Object value) Map容器中是否包含值对象对应的键值对
    int size() 包含键值对的数量
    boolean isEmpty() Map是否为空
    void putAll(Map t) 将t的所有键值对存放到本map对象
    void clear() 清空本map对象所有键值对
    put、get方法
    package com.MyCollection;

    import java.util.HashMap;
    import java.util.Map;

    /**
    * 测试HashMap的使用
    * @author Lucifer
    */
    public class TestMap {
       public static void main(String[] args) {

           //定义一个Map
           //因为Map的源码定义了泛型为两个,一个K一个V,所以下面创建对象的时候也需要定义泛型
           Map<Integer,String> m1 = new HashMap(); //Map是一个接口,HashMap是一个实现类,在这里定义的Map的键的类型和值的类型是任意的,什么都可以

           //随便存放一个键值对内容
           m1.put(1,"Lucifer"); //这里的数字1是一个Integer对象,"Lucifer"也是一个对象String对象,在存储的时候会把1和"Lucifer"关联起来
           m1.put(2,"Harden");
           m1.put(3,"James");

           //取出一个对象
           System.out.println(m1.get(1)); //输入取出的键对象返回值对象
      }
    }

    其他方法的实现:

    package com.MyCollection;

    import java.util.HashMap;
    import java.util.Map;

    /**
    * 测试HashMap的使用
    * @author Lucifer
    */
    public class TestMap {
       public static void main(String[] args) {

           //定义一个Map
           //因为Map的源码定义了泛型为两个,一个K一个V,所以下面创建对象的时候也需要定义泛型
           Map<Integer,String> m1 = new HashMap(); //Map是一个接口,HashMap是一个实现类,在这里定义的Map的键的类型和值的类型是任意的,什么都可以

           //随便存放一个键值对内容
           m1.put(1,"Lucifer"); //这里的数字1是一个Integer对象,"Lucifer"也是一个对象String对象,在存储的时候会把1和"Lucifer"关联起来
           m1.put(2,"Harden");
           m1.put(3,"James");

           //取出一个对象
           System.out.println(m1.get(1)); //输入取出的键对象返回值对象

           System.out.println(m1.size());

           System.out.println(m1.isEmpty());

           System.out.println(m1.containsKey(2));

           System.out.println(m1.containsValue("Boy"));

           //定义一个新的Map
           Map<Integer,String> m2 = new HashMap<>();
           //往m2里面插入元素,再将m2插入到m1中
           m2.put(4,"Jun");
           m2.put(5,"king");
           m1.putAll(m2);

           System.out.println(m1);
      }
    }

    Map中键不能重复,如果重复了新的键的值会覆盖老的键的值。是否重复根据的是equals方法

    package com.MyCollection;

    import java.util.HashMap;
    import java.util.Map;

    /**
    * 测试HashMap的使用
    * @author Lucifer
    */
    public class TestMap {
       public static void main(String[] args) {

           //定义一个Map
           //因为Map的源码定义了泛型为两个,一个K一个V,所以下面创建对象的时候也需要定义泛型
           Map<Integer,String> m1 = new HashMap(); //Map是一个接口,HashMap是一个实现类,在这里定义的Map的键的类型和值的类型是任意的,什么都可以

           //随便存放一个键值对内容
           m1.put(1,"Lucifer"); //这里的数字1是一个Integer对象,"Lucifer"也是一个对象String对象,在存储的时候会把1和"Lucifer"关联起来
           m1.put(2,"Harden");
           m1.put(3,"James");

           //取出一个对象
           System.out.println(m1.get(1)); //输入取出的键对象返回值对象

           System.out.println(m1.size());

           System.out.println(m1.isEmpty());

           System.out.println(m1.containsKey(2));

           System.out.println(m1.containsValue("Boy"));

           //定义一个新的Map
           Map<Integer,String> m2 = new HashMap<>();
           //往m2里面插入元素,再将m2插入到m1中
           m2.put(4,"Jun");
           m2.put(5,"king");
           m1.putAll(m2);

           System.out.println(m1);

           //使map中键重复看结果
           m1.put(3,"Three");
           System.out.println(m1);
      }
    }

    比较规范的写法

    package com.MyCollection;

    import java.util.HashMap;
    import java.util.Map;

    /**
    * 测试Map的常用方法
    * @author Lucifer
    */
    public class TestMap2 {
       public static void main(String[] args) {

           Employee e1 = new Employee(1001,"Lucifer",10000);
           Employee e2 = new Employee(1002,"James",100000);
           Employee e3 = new Employee(1003,"Harden",200000);
           Employee e4 = new Employee(1001,"Jun",100000);

           //建立一个容器Map把他存储起来
           Map<Integer,Employee> map = new HashMap<>();

           map.put(1001,e1); //键是id,值是对象
           map.put(1002,e2);
           map.put(1003,e3);
           map.put(1001,e4);

           //取出对象
           Employee emp = map.get(1001);
           System.out.println(emp.getEname()); //调用方法看结果
           System.out.println(emp.getSalary());

           System.out.println(map);
      }
    }

    /**
    * 雇员信息类
    *
    */
    class Employee{
       /*员工属性---id、name、salary*/
       private int id;
       private String ename;
       private double salary;

       /*生成相应的构造器*/
       public Employee(int id, String ename, double salary){
           super();
           this.id = id;
           this.ename = ename;
           this.salary = salary;
      }

       /*重写一下toString方法(Object根类的)*/
       @Override
       public String toString(){
           return "工号:" + id + "姓名:" + ename + "薪资:" + salary;
      }

       /*生成相应的Set、Get方法---JavaBean*/
       public int getId(){
           return id;
      }

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

       public String getEname(){
           return ename;
      }

       public void setEname(String ename){
           this.ename = ename;
      }

       public double getSalary(){
           return salary;
      }

       public void setSalary(double salary){
           this.salary = salary;
      }

    }

     

    It's a lonely road!!!
  • 相关阅读:
    目前主要的测试用例设计方法是什么?
    软件的安全性应从哪几个方面去测试?
    软件产品质量特性是什么?
    在您以往的工作中,一条软件缺陷(或者叫Bug)记录都包含了哪些内容?如何提交高质量的软件缺陷(Bug)记录?
    简述什么是静态测试、动态测试、黑盒测试、白盒测试、α测试 β测试
    详细的描述一个测试活动完整的过程
    在搜索引擎中输入汉字就可以解析到对应的域名,请问如何用LoadRunner进行测试。
    String是最基本的数据类型吗?
    1、面向对象的特征有哪些方面
    说出Servlet的生命周期,并说出Servlet和CGI的区别。
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/14695389.html
Copyright © 2011-2022 走看看