集合之Map体系集合
集合之Map体系集合
一、Map根接口
特点:1. 用于存储任意键值对(Key-Value)。
-
键:无序、无下标、不可重复。
-
值:无序、无下标、可重复。
方法:
- V put (K key,V value) //将对象存入到集合中,关联键值。key重复则覆盖原值。
- Object get (Object key) //根据键获取对应的值。
- Set(K) //返回所有key。
- Collection
values() //返回包含所有值的Collection集合。 - Set<Map.Entry<K,V>> //键值匹配的Set集合。
- 代码实现
package com.sun.base.Map;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/**
* Map接口的使用
* 特点;(1)存储键值对(2)键不能重复,值可以重复(3)无序
*/
public class Demo01 {
public static void main(String[] args) {
//创建Map集合
Map<String,String> map=new HashMap<>();
//1、添加元素
map.put("cn","中国");
map.put("uk","英国");
map.put("usa","美国");
map.put("cn","zhongguo");//重复,会覆盖掉“中国”
System.out.println("元素个数:"+map.size());
System.out.println(map.toString());
//2、删除元素
map.remove("usa");
System.out.println("元素个数:"+map.size());
System.out.println(map.toString());
//3、遍历
//3.1使用keySet()
System.out.println("========3.1使用keySet()=========");
Set<String> keySet = map.keySet();
for (String key:keySet) {
System.out.println(key+"---"+map.get(key));
}
//3、2使用entrySet()方法效率高于keySet
System.out.println("========3、2使用entrySet()方法=========");
Set<Map.Entry<String, String>> entries = map.entrySet();
for (Map.Entry<String,String> entry:entries) {
System.out.println(entry.getKey()+"---"+entry.getValue());
}
//4、判断
System.out.println(map.containsKey("cn"));
System.out.println(map.containsValue("中国"));
}
}
二、Map集合的实现类
- HashMap:线程不安全,运行效率快;允许用null作为key或是value。
代码实现
package com.sun.base.Map;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
/**
* HashMap集合的使用
* 存储结构:哈希表(数组+链表+红黑树)
* 使用key的hashCode和equals作为重复依据
* @author SFF
*/
public class Demo02 {
public static void main(String[] args) {
//创建集合
HashMap<Student, String> stu = new HashMap<>();
//添加元素
Student s1 = new Student("孙悟空", 118);
Student s2 = new Student("猪八戒", 128);
Student s3 = new Student("沙和尚", 138);
stu.put(s1,"广东");
stu.put(s2,"陕西");
stu.put(s3,"河南");
System.out.println("元素个数:"+stu.size());
System.out.println(stu.toString());
//删除
//stu.remove(s2);
//遍历
System.out.println("=====使用keySet=====");
Set<Student> students = stu.keySet();
for (Student s:students) {
System.out.println(s.toString()+"="+stu.get(s));
}
System.out.println("=====使用entrySet=====");
Set<Map.Entry<Student, String>> entries = stu.entrySet();
for (Map.Entry<Student,String> st:entries) {
System.out.println(st.getKey()+"="+st.getValue());
}
//判断
System.out.println(stu.containsKey(s1));
System.out.println(stu.containsValue("陕西"));
System.out.println(stu.isEmpty());
}
}
class Student{
private String name;
private int age;
Student(String name, int age) {
this.name = name;
this.age = age;
}
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;
}
@Override
public String toString() {
return "Student[" + "name=" + name + ", age=" + age + ']';
}
}
-
Hashtable(不常用):线程安全,运行效率慢;不允许null作为key或者value。
-
Properties:Hashtable的子类,要求key和value都是String,通常用于配置文件的读取
-
TreeMap:实现了SortedMap接口(是Map的子接口),可以对key自动排序
package com.sun.base.Map;
import java.util.TreeMap;
/**
-
TreeMap的使用
-
存储结构:红黑树
-
@author SFF
*/
public class Demo03 {
public static void main(String[] args) {
//创建集合
TreeMap<Student, String> treeMap = new TreeMap<>();
//添加元素
Student s1 = new Student("孙悟空", 118);
Student s2 = new Student("猪八戒", 128);
Student s3 = new Student("沙和尚", 138);
treeMap.put(s1,"广东");
treeMap.put(s2,"陕西");
treeMap.put(s3,"河南");
System.out.println("元素个数:"+treeMap.size());
System.out.println(treeMap.toString());
//删除 treeMap.remove
//遍历1、使用keySet。2、使用entrySet
}
}
class Student implements Comparable{
private String name;
private int age;Student(String name, int age) {
this.name = name;
this.age = age;
}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;
}@Override
public String toString() {
return "Student[" + "name=" + name + ", age=" + age + ']';
}@Override
public int compareTo(Student o) {
int n1=this.age-o.getAge();
return n1;
}
}

浙公网安备 33010602011771号