现实生活中,我们经常需要成对存储某些信息。比如,我们使用的微信,一个手机号只能对应一个微信账户。这就是一种成对存储的关系。
Map就是用来存储“键(key)-值(value) 对”的。 Map类中存储的“键值对”通过键来标识,所以“键对象”不能重复。
Map 接口的实现类有HashMap、TreeMap、HashTable、Properties等。
一个简单的例子测试一下常用方法,进一步认识一下Map:
import java.util.HashMap;
import java.util.Map;
public class TestMAp {
public static void main(String[] args) {
Map<Integer,String> m1 = new HashMap<>(); //<键,值>
m1.put(1,"one"); //成对存放
m1.put(2,"two");
m1.put(3,"three");
m1.put(3, "third"); //键重复了,则会替换旧的键值对
//取1的时候会取出与1对应的值
System.out.println(m1.get(1));
//大小
System.out.println(m1.size());
//键是否包含1
System.out.println(m1.containsKey(1));
//值是否包含“two”
System.out.println(m1.containsValue("two"));
Map<Integer, String> m2 = new HashMap<Integer, String>();
m2.put(4, "四");
m2.put(5, "五");
//将m2中所有键值放入m1
m1.putAll(m2);
System.out.println(m1);
}
}
输出:
再来一个实际些的例子理解Map:
import java.util.HashMap;
import java.util.Map;
/**
* 测试Map的常用 方法
* @author liwenlong
*
*/
public class TestMap2 {
public static void main(String[] args) {
Employee emp1 = new Employee(1001,"李小龙", 200000);
Employee emp2 = new Employee(1002,"李大龙", 190000);
Employee emp3 = new Employee(1003,"李一龙", 210000);
//使用Map存储以上数据
Map<Integer, Employee> map = new HashMap<Integer, Employee>();
map.put(1001, emp1);
map.put(1002, emp2);
map.put(1003, emp3);
//取出来看看
Employee newEmp = map.get(1001);
System.out.println(newEmp.getEname());
}
}
//雇员信息
class Employee{
private int id; //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;
}
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;
}
}
输出: