Map---接口
存储”键值对“,健不可以重复(这里健不能重复不是说在代码上会报错,而是重复的健的值会被覆盖,即唯一的健,可以对应多个值)
Map<Integer,String> map = new HashMap<>();
map.put(1,"dff");
map.put(1,"dfjfkdk");
map.get(1)-----"dfjfkdk"
实现的类有HashMap,TreeMap,HashTable,Properities等
Map中常见的方法
package com.datastures.maptest;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
/**
* 测试接口map中的方法
* @author zhuaisha98kbaoni
*
*/
public class MapTest {
public static void main(String[] args) {
Map<Integer,Employees> map = new HashMap<>();
/*
* 加入数据
*/
Employees employees01 = new Employees("张三", 20, 5000);
Employees employees02 = new Employees("里斯", 50, 8000);
Employees employees03 = new Employees("赵六", 30, 3000);
Employees employees04 = new Employees("王五", 27, 4500);
Employees employees05 = new Employees("七牛", 40, 1000);
map.put(1, employees01);
map.put(2, employees02);
map.put(3, employees03);
map.put(4, employees04);
map.put(5, employees05);
/*
* 取指定健的值
*/
Employees employees = map.get(4);
System.out.println("该员工的基本信息:" + "\n" + "姓名:" + employees.getName() +"\n" + "年龄:" + employees.getAge() + "\n" + "工资:" + employees.getSalary());
/*
* 值的迭代
* Collection<Employees> collection2 = new ArrayList<Employees>(map.values());
*/
Collection<Employees> collection = map.values();
Iterator<Employees> iterator = collection.iterator();
while (iterator.hasNext()) {
Employees employ = iterator.next();
System.out.println(employ.getName() + "\t" + employ.getAge() + "\t" + employ.getSalary());
/*
* 这里犯了错误,以为迭代器中存储的时Employees对象,
* 就可以直接使用iterator.toString()方法得到
* public String toString() {
* return getClass().getName() + "@" + Integer.toHexString(hashCode());
* }
* 所以下面的语句的结果一样,即地址一样
*/
System.out.println(iterator.toString());
}
System.out.println("获得值:");
for (Employees employees2 : collection) {
System.out.println(employees2.getName() + "\t" + employees2.getAge() + "\t" + employees2.getSalary());
}
/*
* 获取健
*/
System.out.println("获得键:");
Set<Integer> set = map.keySet();
Iterator<Integer> iterator2 = set.iterator();
while (iterator2.hasNext()) {
Integer integer = iterator2.next();
System.out.println(map.get(integer).getName() + "\t" + map.get(integer).getAge() + "\t" +map.get(integer).getSalary());
}
/*
* 键值映射的数量
*/
System.out.println("\n\n\n" + "键值映射的数量:");
System.out.println(map.size());
/*
* 指定的健的值被替换
*/
Employees employees06 = new Employees("liuliu", 56, 12000);
boolean ifreplace = map.replace(5, employees05, employees06);
if (ifreplace) {
System.out.println("替换成功!");
System.out.println(employees06.hashCode() + "&&&&&&&&&");
employees06 = map.get(5);
System.out.println(employees06.hashCode() + "***********");
System.out.println(employees06.getName() + "\t" + employees06.getAge() + "\t" + employees06.getSalary());
}else{
System.out.println("替换不成功!");
}
/*
* 移除某个键值对
*/
boolean ifremove = map.remove(4, map.get(4));
if (ifremove) {
System.out.println("删除成功!");
Set<Integer> set1 = map.keySet();
Iterator<Integer> iterator3 = set1.iterator();
while (iterator3.hasNext()) {
Integer integer = iterator3.next();
System.out.println(map.get(integer).getName() + "\t" + map.get(integer).getAge() + "\t" +map.get(integer).getSalary());
}
}
/*
* 是否包含某个健,某个值
*/
boolean ifKey = map.containsKey(5);
if(ifKey){
System.out.println("存在健,所对应的值:" + map.get(5).getName());
}
boolean ifValue = map.containsValue(employees06);
if(ifValue){
System.out.println("存在值!");
}
}
}
package com.datastures.maptest;
/*
* 员工的基本信息
*/
public class Employees {
private String name;
private int age;
private float salary;
public Employees(String name,int age,float salary) {
this.name = name;
this.age = age;
this.salary =salary;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public float getSalary() {
return salary;
}
public void setSalary(float salary) {
this.salary = salary;
}
}