<rp id="fwvfj"></rp>
      1. <button id="fwvfj"><object id="fwvfj"><input id="fwvfj"></input></object></button>
        当前位置: 首页 / 技术分享 / 正文
        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(北京)

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

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

        精品亚洲A∨无码一区二区三区

        <rp id="fwvfj"></rp>
          1. <button id="fwvfj"><object id="fwvfj"><input id="fwvfj"></input></object></button>