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)); } } }
来源:https://www.cnblogs.com/TCB-Java/p/6770133.html