1、TreeMap集合
基于红黑树(Red-Black tree)的 NavigableMap
实现。该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator
进行排序,具体取决于使用的构造方法。
注意,此实现不是同步的。
2、构造方法
TreeMap()
: 使用键的自然顺序构造一个新的、空的树映射。
TreeMap(Comparator<? super K> comparator)
: 构造一个新的、空的树映射,该映射根据给定比较器进行排序。
3、代码说明
1、基于红黑树结构的map接口实现
package TreeMap;
import java.util.Set;
import java.util.TreeMap;
/*
* TreeMap基于红黑树结构的Map接口的实现
*
* TreeMap<String,String>
*
*需求:输出键值对
* */
public class TreeMap_method {
public static void main(String[] args) {
//创建TreeMap集合
TreeMap<String,String> map = new TreeMap<String,String>();
//向集合中存储元素
map.put("皇帝", "皇后");
map.put("皇帝", "皇后");
map.put("太监", "宫女");
map.put("太子", "太子妃");
map.put("王爷", "王妃");
//遍历
Set<String> set = map.keySet();
for(String Key : set){
// System.out.println(s); //只输出了键,没有输出值
//通过键找值
String Value = map.get(Key);
System.out.println(Key+"-------"+Value);
}
/*输出:
* 太子-------太子妃
太监-------宫女
王爷-------王妃
皇帝-------皇后
无重复元素,输出无序。
*
* */
}
}
2、TreeMap的选择排序
package TreeMap;
import java.util.Comparator;
import java.util.Set;
import java.util.TreeMap;
/*
*需求:对集合元素进行排序;按照学生年龄进行排序(键盘录入)
*
* 选择器排序:使用匿名内部类
*
* 分析:
* a、创建学生类
* b、创建TreeMap集合
* c、创建学生对象,向TreeMap集合中添加元素
* d、将元素放在Set集合中
* e、遍历集合元素
* */
public class TreeMap_method2 {
public static void main(String[] args) {
//创建TreeMap集合
TreeMap<Student,String> map = new TreeMap<Student,String>(new
Comparator<Student>(){
@Override
public int compare(Student s1, Student s2) {
//年龄从小到大
int number = s1.getAge() - s2.getAge();
//年龄相同,姓名不一定相同
int number1 = number == 0 ? s1.getName().compareTo(s2.getName()) : number;
return number1;
}
});
//创建学生对象
Student s1 = new Student("张三",15);
Student s2 = new Student("李四",35);
Student s7 = new Student("王五",135);
Student s3 = new Student("崔六",123);
Student s4 = new Student("刘七",45);
Student s5 = new Student("鱼八",4);
Student s6 = new Student("张三",67);
//添加到集合中
map.put(s1, "春秋");
map.put(s2, "战国");
map.put(s3, "秦汉");
map.put(s4, "隋唐");
map.put(s5, "宋元");
map.put(s6, "明清");
map.put(s7, "民国");
//创建Set集合
Set<Student> set = map.keySet();
//遍历
for(Student Key : set){
//通过键找值
String Value = map.get(Key);
System.out.println(Key.getName()+"----"+Key.getAge());
/*输出:
* 鱼八----4
张三----15
李四----35
刘七----45
张三----67
崔六----123
王五----135
按年龄从小到大排序,无重复元素
* */
}
}
}
package TreeMap;
public class Student {
private String name;
private int age;
public Student() {
super();
}
public Student(String name, int age) {
super();
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;
}
}