TreeMap集合特点、排序原理
来源:互联网 发布:双色球软件2016破解 编辑:程序博客网 时间:2024/05/22 13:56
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)); } }}
- TreeMap集合特点、排序原理
- TreeMap集合排序
- Java 集合:TreeMap工作原理及实现
- TreeMap集合如何按照Value进行排序
- Java集合框架之TreeMap的排序
- 【Java基础】Map集合简介 排序的集合TreeMap
- 集合-TreeMap
- java集合TreeMap使用自然排序,定制排序
- treeMap原理
- TreeMap原理
- treemap原理
- java集合排序-----原理
- TreeSet集合排序原理
- 深入java集合源码学习系列:TreeMap的实现原理
- java集合类TreeMap细节解析及红黑树原理
- Java学习笔记之集合(九):TreeMap的存储原理
- List.HashMap.TreeMap.HashSet,TreeSet以及集合排序
- TreeMap 排序
- evpp设计细节系列(1):利用 enable_shared_from_this 实现一个自管理的定时器
- 第3章 运算符 选择结构
- POJ 1661 Help Jimmy (DP)
- Codeforces Round #277.5(Div. 2) C. Given Length and Sum of Digits...【贪心】
- The KITTI Vision Benchmark Suite之Displets: Stereo using Object Knowledge
- TreeMap集合特点、排序原理
- BZOJ1016: [JSOI2008]最小生成树计数
- linux静态库
- javascript编写活动倒计时
- ZOJ-1094-Matrix Chain Multiplication
- unit15 系统虚拟机管理
- LeakCanary用法(内存泄漏检查)
- 【HTML】表格样式
- Opencv----图像细化