treeMap 的多种遍历方式以及比较器和comparable的实现

时间:2025-04-03 19:48:37
  • public class TreeMapTest {
  • public static void main(String[] args) {
  • Random gradeRandom =new Random();
  • //生成随机数用于给grade赋予不同的初值
  • TreeMap<Grade,String> gradeMap=new TreeMap<>(new gradeComparator());
  • //new一个TreeMap集合 key部分为自定义的Grade类型,value部分为String 传入的比较成绩的比较器gradeComparator()
  • for (int i = 0; i <1000; i++) {
  • (new Grade((101),"金"+i),"金"+i);
  • }
  • //通过一个for循环为集合赋值
  • //下面是通过将key部分转化为Set集合的方法来遍历TreeMap集合
  • /*Set<Grade> gradeKeys=();//set集合用于存放key部分数据
  • for(Grade i:gradeKeys)
  • {
  • (i+" "+(i));//通过key获取value
  • }*/
  • //下面是通过将TreeMap集合中的key和value一同转化为一个Set集合
  • //是Map接口中的一个内部接口他的泛型为<Grade,Sring> 内部类的形式
  • //Set的泛型为<Grade,String>数据类型
  • Set<<Grade,String>> its=();
  • /*Iterator<<Grade,String>> itsIterator=();//通过迭代器遍历Set集合
  • while(()){
  • (());
  • }*/
  • for(<Grade,String> i:its)//通过增强for循环遍历Set集合
  • {
  • (i);
  • }
  • }
  • }
  • class Grade {
  • private int grade;//Grade中的grade私有元素 有一个gradeComparator比较器
  • private String name;//Grade类中的name私有元素 有一个nameComparator比较器
  • public int getGrade() {
  • return grade;
  • }
  • public void setGrade(int grade) {
  • this.grade = grade;
  • }
  • public String getName() {
  • return name;
  • }
  • public void setName(String name) {
  • this.name = name;
  • }
  • public Grade(int grade, String name) {//构造器
  • this.grade = grade;
  • this.name = name;
  • }
  • public Grade(int grade) {
  • this.grade = grade;
  • }//构造器
  • @Override
  • public String toString() {
  • return "Grade{" +
  • "grade=" + grade +
  • '}';
  • }
  • }
  • class NameComparator implements Comparator<Grade>{//比较器
  • @Override
  • public int compare(Grade o1, Grade o2) {
  • //重写的compara方法,利用String类中的comparaTo方法
  • return ().compareTo(());
  • }
  • }
  • class gradeComparator implements Comparator<Grade>{
  • @Override
  • public int compare(Grade o1, Grade o2) {
  • //重写的compara方法,相减得正或者负或者0
  • return ()-();
  • }
  • }