zoukankan      html  css  js  c++  java
  • TreeMap集合特点、排序原理

    TreeMap特点(类似于TreeSet):

    1.无序,不允许重复(无序指元素顺序与添加顺序不一致)
    2.TreeMap集合默认会对键进行排序,所以键必须实现自然排序和定制排序中的一种
    3..底层使用的数据结构是二叉树

    两种排序的用法(参照TreeSet集合):

    1.TreeSet集合排序方式一:自然排序Comparable
    http://blog.csdn.net/baidu_37107022/article/details/70207564
    2.TreeSet集合排序方式二:定制排序Comparator
    http://blog.csdn.net/baidu_37107022/article/details/70207633

    练习:

    1,创建公司Company类,拥有属性:no(公司编号)、name(公司名称)、num(公司人数)、founder(创始人)、info(公司简介),要求属性进行封装即:属性私有并提供公有方法。

    (a)请根据下列信息创建5个公司对象,各属性值来自下面的信息

    ”1001,百度,2000,李彦宏,全球最大的中文搜索引擎、致力于让网民更便捷地获取信息,找到所求。”

    “1010,腾讯,10000,马化腾,深圳市腾讯计算机系统有限公司成立于1998年11月,由马化腾、张志东、许晨晔、陈一丹、曾李青五位创始人共同创立。”

    “1020,阿里巴巴,20000,马云,阿里巴巴网络技术有限公司(简称:阿里巴巴集团)”

    “1050,京东,8000,刘强东,京东(JD.com)是中国最大的自营式电商企业,2015年第一季度在中国自营式B2C电商市场的占有率为56.3%。”

    “1030,小米,5000,雷军,小米公司成立于2010年4月,是一家专注于智能产品自主研发的移动互联网公司。”

    (b)请将上述的5个对象添加到TreeMap

    package TreeMap;
    
    import java.text.CollationKey;
    import java.text.Collator;
    
    /**
     * 创建公司Company类,拥有属性:no(公司编号)、
     * name(公司名称)、num(公司人数)、founder(创始人)、
     * info(公司简介),要求属性进行封装即:属性私有并提供公有方法。
     * @author Administrator
     *
     */
    public class Company implements Comparable<Company>{
        private int no;
        private String name;
        private int num;
        private String founder;
        private String info;
        public int getNo() {
            return no;
        }
        public void setNo(int no) {
            this.no = no;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getNum() {
            return num;
        }
        public void setNum(int num) {
            this.num = num;
        }
        public String getFounder() {
            return founder;
        }
        public void setFounder(String founder) {
            this.founder = founder;
        }
        public String getInfo() {
            return info;
        }
        public void setInfo(String info) {
            this.info = info;
        }
        @Override
        public String toString() {
            return "Company [no=" + no + ", name=" + name + ", num=" + num + ", founder=" + founder + ", info=" + info
                    + "]";
        }
        public Company(int no, String name, int num, String founder, String info) {
            super();
            this.no = no;
            this.name = name;
            this.num = num;
            this.founder = founder;
            this.info = info;
        }
        public Company() {
            super();
        }
        //要求按照以下规则依次排序:公司编号、公司名称、创始人、公司人数,按升序排列
        @Override
        public int compareTo(Company o) {
            //公司编号
            int a=this.no-o.no;
            if(a!=0){
                return a;
            }else{
                //公司名称
                CollationKey key=Collator.getInstance().getCollationKey(this.name);
                CollationKey key2=Collator.getInstance().getCollationKey(o.name);
                int b=key.compareTo(key2);
                if(b!=0){
                    return b;
                }else{
                    //创始人
                    CollationKey key3=Collator.getInstance().getCollationKey(this.founder);
                    CollationKey key4=Collator.getInstance().getCollationKey(o.founder);
                    int c=key3.compareTo(key4);
                    if(c!=0){
                        return c;
                    }else {
                        //公司人数
                        return this.num-o.num;
                    }
                }
            }
        }
    
    }
    

    测试代码:

    package TreeMap;
    
    import java.util.Set;
    import java.util.TreeMap;
    
    
    public class Test {
        public static void main(String[] args) {
            TreeMap<Company, String> map=new TreeMap<>();
            map.put(new Company(1001, "百度", 2000, "李彦宏", "全球最大的中文搜索引擎、致力于让网民更便捷地获取信息,找到所求"), 
                    "有钱的公司,任性!!");
            map.put(new Company(1010, "腾讯", 10000, "马化腾", "深圳市腾讯计算机系统有限公司成立于1998年11月,由马化腾、张志东、许晨晔、陈一丹、曾李青五位创始人共同创立"), 
                    "有钱的公司,任性!!");
            map.put(new Company(1020, "阿里巴巴", 20000, "马云", "阿里巴巴网络技术有限公司(简称:阿里巴巴集团)"),
                    "有钱的公司,任性!!");
            map.put(new Company(1050, "京东", 8000, "刘强东", "京东(JD.com)是中国最大的自营式电商企业,2015年第一季度在中国自营式B2C电商市场的占有率为56.3%"),
                    "有钱的公司,任性!!");
            map.put(new Company(1030, "小米", 5000, "雷军", "小米公司成立于2010年4月,是一家专注于智能产品自主研发的移动互联网公司"), 
                    "有钱的公司,任性!!");
    
            Set<Company> set=map.keySet();
            for (Company company : set) {
                System.out.println(company+","+map.get(company));
            }
        }
    }
    
  • 相关阅读:
    快速入门:BUMO 节点安装运维指南
    快速入门:BUMO 智能合约(hello world)
    python 多进程处理 multiprocessing模块
    python 多进程处理 multiprocessing模块
    python 多进程处理 multiprocessing模块
    一段简单的数据加密小例程
    一段简单的数据加密小例程
    一段简单的数据加密小例程
    一段简单的数据加密小例程
    家用PC机打造VSphere5.1 测试环境:之部署VCenter Server 5.1
  • 原文地址:https://www.cnblogs.com/TCB-Java/p/6770133.html
Copyright © 2011-2022 走看看