1. <output id="xofhe"></output>

      <menuitem id="xofhe"></menuitem>
      当前位置: 首页 / 技术分享 / 正文
      TreeMap集合

      2022-12-22

      排序 treemap 集合 student map

        TreeMap集合

        HashMap集合存储的元素的键值是无序的和不可重复的,为了对集合中的元素的键值进行排序,Map接口提供了另一个可以对集合中元素键值进行排序的类TreeMap。

        接下来通过一个案例演示TreeMap集合的用法。 

      Java
      import java.util.Iterator;
      import java.util.Set;
      import java.util.TreeMap;

      public class Example19 {
          public static void main(String[] args) {
              TreeMap map = new TreeMap(); // 创建Map集合
              map.put(2. "赵六"); // 存储键和值
              map.put(1. "张三");
              map.put(3. "王五");
              map.put(2. "李四");
              Set keySet = map.keySet();
              Iterator it = keySet.iterator();
              while (it.hasNext()) {
                  Object key = it.next();
                  Object value = map.get(key); // 获取每个键所对应的值
                  System.out.println(key + ":" + value);
              }
          }
      }

        从运行结果可以看出,添加的元素已经自动排序,并且键值重复存入的整数2只有一个,只是后边添加的值“李四”覆盖了原来的值“赵六”。这也证实了TreeMap中的键必须是唯一的,不能重复并且有序,如果存储了相同的键,后存储的值则会覆盖原有的值。

        TreeMap集合之所以可以对添加的元素的键值进行排序,其实现同TreeSet一样,TreeMap的排序也分自然排序与比较排序两种。接下来通过一个案例演示比较排序法实现按键值排序,在该案例中,键是自定义的String类。 

      Java
      import java.util.Comparator;
      import java.util.Iterator;
      import java.util.Set;
      import java.util.TreeMap;

      class Student {
          private String name;
          private int age;

          public 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 + "]";
          }
      }

      public class Example20 {
          public static void main(String[] args) {
              TreeMap tm = new TreeMap(new Comparator<Student>() {
                  @Override
                  public int compare(Student s1. Student s2) {
                      int num = s1.getName().compareTo(s2.getName()); // 按照姓名比较
                      return num == 0 ? num : s1.getAge() - s2.getAge();
                  }
              });
              tm.put(new Student("张三", 23), "北京");
              tm.put(new Student("李四", 13), "上海");
              tm.put(new Student("赵六", 43), "深圳");
              tm.put(new Student("王五", 33), "广州");
              Set keySet = tm.keySet();
              Iterator it = keySet.iterator();
              while (it.hasNext()) {
                  Object key = it.next();
                  Object value = tm.get(key); // 获取每个键所对应的值
                  System.out.println(key + ":" + value);
              }
          }
      }

        上述代码中,定义了一个TreeMap集合,并在该集合中通过匿名内部类的方式实现了Comparator接口,然后重写了compare()方法,在compare()方法中通过三目运算符的方式自定义了排序方式为先按照年龄排序,年龄相同再按照姓名排序。然后通过Map的put(Object key, Object value)方法向集合中加入4个键为Student对象、值为String类型的元素,并使用迭代器将集合中元素进行打印输出。

      分享: 更多

      上一篇:Map接口与HashMap集合

      下一篇:Properties集合

      好程序员公众号

      • · 剖析行业发展趋势
      • · 汇聚企业项目源码

      好程序员开班动态

      More+
      • HTML5大前端 <高端班>

        开班时间:2021-04-12(深圳)

        开班盛况

        开班时间:2021-05-17(北京)

        开班盛况
      • 大数据+人工智能 <高端班>

        开班时间:2021-03-22(杭州)

        开班盛况

        开班时间:2021-04-26(北京)

        开班盛况
      • JavaEE分布式开发 <高端班>

        开班时间:2021-05-10(北京)

        开班盛况

        开班时间:2021-02-22(北京)

        开班盛况
      • Python人工智能+数据分析 <高端班>

        开班时间:2021-07-12(北京)

        预约报名

        开班时间:2020-09-21(上海)

        开班盛况
      • 云计算开发 <高端班>

        开班时间:2021-07-12(北京)

        预约报名

        开班时间:2019-07-22(北京)

        开班盛况
      在线咨询
      试听
      入学教程
      立即报名

      Copyright 2011-2023 北京千锋互联科技有限公司 .All Right 京ICP备12003911号-5 京公网安备 11010802035720号

      成熟妓女BBw
        1. <output id="xofhe"></output>

          <menuitem id="xofhe"></menuitem>