Java语言-31:TreeMap集合

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);
}
/*输出:
* 太子-------太子妃
太监-------宫女
王爷-------王妃
皇帝-------皇后

无重复元素,输出无序。

* */


}


}

扫描二维码关注公众号,回复: 894662 查看本文章


    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;
}




}


猜你喜欢

转载自blog.csdn.net/qq_41833394/article/details/80309761