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!!!
原文地址:https://www.cnblogs.com/JunkingBoy/p/14695389.html