1.Map集合的实现类
HashMap:线程不安全、运行效率快;允许用null作为key或者value;
HashTable:线程安全,运行效率慢,不允许null作为key或者value;
Properties:Hashtable的子类,要求key和value都是String,通常用于配置文件的读取;
TreeMap:实现了SortedMap接口(是Map的子接口),可以对key进行排序;
2.TreeMap使用举例
package com.yundait.demo02;
import java.util.Comparator;
import java.util.Map;
import java.util.TreeMap;
import java.util.TreeSet;
public class TreeMapDemo01 {
public static void main(String[] args) {
//创建集合 并使用内部类的方式定义排序方式
TreeMap<Student, String> treeMap = new TreeMap<>(new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
int n1 = o1.getStuNo() - o2.getStuNo();
return n1;
}
});
//添加元素
Student s1 = new Student("孙悟空",10001);
Student s2 = new Student("猪八戒",10002);
Student s3 = new Student("沙和尚",10000);
treeMap.put(s1,"北京");
treeMap.put(s2,"天津");
treeMap.put(s3,"和田");
treeMap.put(new Student("沙和尚",10000),"南京");//不能加入,但是会把value覆盖掉;
System.out.println(treeMap.toString());
System.out.println("元素个数" + treeMap.size());
//删除元素
//treeMap.remove(s3);
//treeMap.remove(new Student("沙和尚",10000));//学号(StuNo)相同就认为是同一个元素
System.out.println("删除后元素个数:" + treeMap.size());
System.out.println(treeMap.toString());
//遍历元素
//使用keySet方法进行遍历
for (Student key : treeMap.keySet()) {
System.out.println(key+"-----------"+treeMap.get(key));
}
//使用entrySet进行遍历
System.out.println("++++++++++++++++++++++++++++++");
for (Map.Entry<Student, String> entry : treeMap.entrySet()) {
System.out.println(entry.getKey() + "----------" + entry.getValue());
}
//判断
System.out.println(treeMap.containsKey(new Student("沙和尚",10000)));
System.out.println(treeMap.containsValue("东京"));
}
}
通过源码我们可以知道TreeSet集合使用了TreeMap集合的key存放数据;