一、HashMap概念和常用方法
(一)HashMap基本概念
HashMap是Map接口的实现类,是以key-value形式存储数据。虽然线程不安全,但执行效率高。其存储结构是哈希表。
(二)HashMap常用方法
1.put(key, value)
往HashMap中添加元素key-value。
key已经存在时,用新的值value覆盖旧的值。
2.remove(key)
按照指定的键移除元素。
3.get(key)
按照指定的键key得到值value。
4.keySet()
返回HashMap中的所有key。
5.entrySet()
返回HashMap中的所有key-value。
6.containsKey(key)
判断HashMap中是否包含指定key。
7.containsValue(value)
判断HashMap中是否包含指定value。
二、演示代码设计
1.Writer类
设计一个Writer类作为HashMap的key。
Writer类中包含实例属性姓名name和学号id
2.Test类
用于创建HashMap对象,进行添加、移除元素等操作。
三、代码
1.Writer类
public class Writer {
private String name;
private int id;
public Writer() {
}
public Writer(String name, int id) {
this.name = name;
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
2.Test类
import java.util.HashMap;
import java.util.Map;
public class Test {
public static void main(String[] args) {
//0.创建HashMap对象
HashMap<Writer, String> writers = new HashMap<>();
//1.添加元素
Writer w1 = new Writer("欧阳修", 001);
Writer w2 = new Writer("王安石", 002);
Writer w3 = new Writer("苏洵", 003);
Writer w4 = new Writer("苏轼", 004);
Writer w5 = new Writer("苏辙", 005);
writers.put(w1, "绵阳");
writers.put(w2, "抚州");
writers.put(w3, "眉山");
writers.put(w4, "眉山");
writers.put(w5, "眉山");
// writers.put(w5, "四川");
writers.put(new Writer("曾巩", 006), "南丰");
System.out.println("作家的个数是:" + writers.size());
System.out.println(writers.toString());
//2.移除元素
writers.remove(w5);
System.out.println("删除之后的作家个数:" + writers.size());
//3.使用keySet()遍历
System.out.println("******keySet*******");
for (Writer w:writers.keySet()) {
System.out.println(w.toString() + ":" + writers.get(w));
}
//4.使用entrySet()遍历
System.out.println("******entrySet******");
for (Map.Entry<Writer, String> entry: writers.entrySet()) {
System.out.println(entry.getKey() + entry.getValue());
}
//5.判断是否包含指定值
System.out.println("是否包含指定元素");
System.out.println(writers.containsKey(w1));
System.out.println(writers.containsValue("绵阳"));
System.out.println(writers.containsKey(new Writer("欧阳修", 001))); //注意此处结果为false,因为keySet()里边存储的是各个对象的地址值
}
}
四、代码运行结果
作家的个数是:6
{com.jzt.emp1.deom02.Writer@77f03bb1=南丰, com.jzt.emp1.deom02.Writer@3ecf72fd=眉山, com.jzt.emp1.deom02.Writer@73035e27=绵阳, com.jzt.emp1.deom02.Writer@64c64813=抚州, com.jzt.emp1.deom02.Writer@21a06946=眉山, com.jzt.emp1.deom02.Writer@483bf400=眉山}
删除之后的作家个数:5
******keySet*******
com.jzt.emp1.deom02.Writer@77f03bb1:南丰
com.jzt.emp1.deom02.Writer@3ecf72fd:眉山
com.jzt.emp1.deom02.Writer@73035e27:绵阳
com.jzt.emp1.deom02.Writer@64c64813:抚州
com.jzt.emp1.deom02.Writer@483bf400:眉山
******entrySet******
com.jzt.emp1.deom02.Writer@77f03bb1南丰
com.jzt.emp1.deom02.Writer@3ecf72fd眉山
com.jzt.emp1.deom02.Writer@73035e27绵阳
com.jzt.emp1.deom02.Writer@64c64813抚州
com.jzt.emp1.deom02.Writer@483bf400眉山
是否包含指定元素
true
true
false
Process finished with exit code 0