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;}@Overridepublic 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();}//要求按照以下规则依次排序:公司编号、公司名称、创始人、公司人数,按升序排列@Overridepublic 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));}}
}

TreeMap集合特点、排序原理相关推荐

  1. Java实现TreeMap集合的排序:Key键的升序与降序、Value值的排序

    Java 提供的 Map 接口常用的实现类有 HashMap 和 TreeMap.HashMap 类实现的 Map 集合对于添加和删除映射关系效率更高.HashMap 通过哈希码对其内部的映射关系进行 ...

  2. TreeMap集合怎样依照Value进行排序

    ------- android培训.java培训.期待与您交流! ---------- 我们知道,TreeMap集合是依照Key进行排序的,怎样依照Value进行排序呢?如今有一个TreeMap集合 ...

  3. 对map集合进行排序

    今天做统计时需要对X轴的地区按照地区代码(areaCode)进行排序,由于在构建XMLData使用的map来进行数据统计的,所以在统计过程中就需要对map进行排序. 一.简单介绍Map 在讲解Map排 ...

  4. java中treemap_Java中TreeMap集合讲解

    1.TreeSet介绍 TreeSet是一个有序集合,可以以任意顺序将元素插入到集合中,在对集合进行遍历的时候,每个元素将自动按照排序后的顺序呈现.底层使用的是二叉树(更具体点是红黑树)实现,对于元素 ...

  5. JavaSE学习总结(十四)Map集合/Map和Collection的区别/HashMap/LinkedHashMap/TreeMap/集合间的嵌套/Hashtable/Collections工具类

    一.Map集合 我们知道,一个学号就能对应一个学生,并且每个学生的学号都不同,学号就像一个键,对应的学生就是该键对应的值.日常生活中经常能见到这种类似学号对应学生的例子.Java 为了我们更加方便地去 ...

  6. JAVA SE学习day_12:集合的排序、队列、栈结构

    一.集合的排序 1.1 集合的排序 集合的工具类java.util.Collections提供了一个静态方法sort,可以对List集合 进行自然排序,即:从小到大 除了自然排序之外还有反转.乱序方法 ...

  7. golang 排序list_Go语言使用sort包对任意类型元素的集合进行排序的方法

    本文实例讲述了Go语言使用sort包对任意类型元素的集合进行排序的方法.分享给大家供大家参考.具体如下: 使用sort包的函数进行排序时,集合需要实现sort.Inteface接口,该接口中有三个方法 ...

  8. HashMap集合和TreeMap集合

    ---------------------------HashMap集合的遍历 /第一种 package ji_he;import java.util.*;public class Example16 ...

  9. Java集合 LinkedList的原理及使用

    1.LinkedList的概述 2.LinkedList的常用方法 3.LinkedList的三种便利方式 4.LinkedList的总结 1.LinkedList的概述 LinkedList和Arr ...

最新文章

  1. 怎么样给下拉框加载背景色
  2. Windows下安装Anaconda3与配置
  3. R语言文本挖掘NASA数据网络分析,tf-idf和主题建模
  4. SDL介绍和简单实用
  5. leetcode 64. Minimum Path Sum
  6. OpenCASCADE:简介
  7. 【cJson】 JSON格式详解
  8. mysql最大连接数合理值_MySQL服务器最大连接数的合理设置
  9. 通过NSString初始化OC类
  10. 最可怕的八种黑客手段,网络攻击真是无孔不入!【转载】
  11. Windows下的MySQL安装、MySQL-Front安装
  12. python服务器查看文件更改记录,python 查看远程服务器上的文件
  13. 【.NET开发之美】使用ComponentOne提高.NET DataMap中的加载速度
  14. win10不能安装破解软件:提示系统资源不足,无法完成请求服务的解决方法
  15. 互联网金融系列-支付清算体系介绍-下篇
  16. 对比俩个List之间的差异
  17. 使用火车头采集器的时候往文本之中均匀的插入图片
  18. java跳格子不同跳发_(算法)跳格子
  19. win32k.sys 映射地址
  20. Cows(树状数组)

热门文章

  1. 如何用excel筛选相似内容_Excel筛选你用好了么?别再下拉点点点了
  2. 数学建模——线性规划模型详解Python代码
  3. 分组密码Feistel结构补充说明
  4. 2020 安恒七月赛
  5. 【django】解决关于RuntimeError: ‘cryptography‘ package is required for sha256_password or caching...问题
  6. 13-Introduction to security
  7. Linux和optee双系统中1020-1023号的中断号的使用
  8. 如何在C语言中巧妙地避免使用if语句?
  9. 用Go语言建立一个简单的区块链part4(1):交易(1)
  10. [网鼎杯 2020 青龙组]bang