Map集合
Map接口特点:
- 用于存储任意键值对(Key-Value);
- 键:无序、无下标、不允许重复(唯一);
- 值:无序、无下标、允许重复。
特点:存储一对数据(Key-Value),无序、无下标、键不可重复、值可以重复。
方法:
V put(K key,V value);//将对象存储到集合中,关联键值。key重复则覆盖原值。
Object get (Object key);//根据键获取对应的值。
keySet <key>;//返回所有key。
Collection<V> values();//返回包含所有值的Collection集合。
Set <Map.Entry<K,V>>; //键值匹配的Set集合。
基本使用:
import java.util.HashMap;
import java.util.Map;
/**
* Map接口的使用
* 特点:(1)存储键值对(2)键不能重复,值可以重复(3)无序
*/
public class Demo01 {
public static void main(String[] args) {
//创建Map集合
Map<String, String> map = new HashMap<>();
//添加元素
map.put("CN","中国");
map.put("UK","英国");
map.put("USA","美国");
// map.put("CN","zhongguo");//值会被替换,键不可以重复
// map.put("China","zhongguo");//值可以重复
System.out.println("元素个数:"+map.size());
System.out.println(map.toString());
//删除
map.remove("USA");
System.out.println("删除之后:"+map.size());
System.out.println(map.toString());
//遍历
//使用keySet();
System.out.println("———————————————keySet()遍历—————————————————");
for (String s : map.keySet()) {
System.out.print(s+"——>"+map.get(s)+"\t");
}
System.out.println("\n———————————————entrySet()遍历(效率更高 )—————————————————");
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.print(entry.getKey()+"-->"+entry.getValue()+"\t");
}
System.out.println();
//判断
System.out.println(map.containsKey("CN"));
System.out.println(map.containsValue("泰国"));
System.out.println(map.isEmpty());
}
}
Map集合实现类
HashMap【重点】:
- JDK1.2版本,线程不安全,运行效率高 ,允许使用null作为key或者value;
- HashMap();构造一个初始容量为16和默认加载因子为0.75的空HashMap。
import java.util.HashMap;
import java.util.Map;
/**
* HashMap集合的使用
* 存储结构:哈希表(数组+链表+红黑树)
*/
public class Demo02 {
public static void main(String[] args) {
//创建对象
HashMap<Student, String> hashMap = new HashMap<>();
Student p1 = new Student("张学友", 20);
Student p2 = new Student("刘德华", 19);
Student p3 = new Student("郭富城", 18);
Student p4 = new Student("黎明", 18);
//添加元素
hashMap.put(p1,"歌神");
hashMap.put(p2,"综合王");
hashMap.put(p3,"舞王");
hashMap.put(p4,"文艺王");
hashMap.put(new Student("张学友",20),"music");
System.out.println("元素个数:"+hashMap.size());
System.out.println(hashMap.toString());
//删除元素
// hashMap.remove(p1);
// hashMap.clear();
// System.out.println("元素个数:"+hashMap.size());
// System.out.println(hashMap.toString());
//遍历
System.out.println("——————————————————keySet方法——————————————————————————");
for (Student student : hashMap.keySet()) {
System.out.print(student.toString()+"-->"+hashMap.get(student)+"\t");
}
System.out.println();
System.out.println("——————————————————entrySet方法——————————————————————————");
for (Map.Entry<Student, String> entry : hashMap.entrySet()) {
System.out.print(entry.getKey()+"-->"+entry.getValue()+"\t");
}
System.out.println();
//判断
System.out.println(hashMap.containsKey(new Student("张学友", 20)));
System.out.println(hashMap.containsKey(p1));
System.out.println(hashMap.containsValue("文艺王"));
}
}