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集合特点、排序原理的更多相关文章

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

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

  2. java基础36 双例集合Map下的HashMap和TreeMap集合

    单例集合体系: ---------| collection  单例集合的根接口--------------| List  如果实现了list接口的集合类,具备的特点:有序,可重复       注:集合 ...

  3. java集合对象实现原理

    1.集合包 集合包是java中最常用的包,它主要包括Collection和Map两类接口的实现. 对于Collection的实现类需要重点掌握以下几点: 1)Collection用什么数据结构实现? ...

  4. TreeMap集合根据指定元素,进行删除和修改的两种方式实现及bug梳理

    TreeMap根据key中的指定元素进行删除修改的两种方式实现及注意事项: 方式一:利用增强for进行删除和修改 总结:逻辑简单,但是局限性太强,如果排序规则是从小到大进行排序的,则该方法不能进行删除 ...

  5. 对map集合进行排序

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

  6. List泛型集合对象排序

    本文的重点主要是解决:List<T>对象集合的排序功能. 一.List<T>.Sort 方法 () MSDN对这个无参Sort()方法的介绍:使用默认比较器对整个List< ...

  7. Java中TreeMap集合讲解

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

  8. wpf 导出Excel Wpf Button 样式 wpf简单进度条 List泛型集合对象排序 C#集合

    wpf 导出Excel   1 private void Button_Click_1(object sender, RoutedEventArgs e) 2 { 3 4 ExportDataGrid ...

  9. java进阶(31)--TreeSet集合、TreeMap集合、自平衡二叉树

    一.TreeSet集合简单 1.TreeSet集合底层是一个TreeMap 2.TreeMap集合底层是一个二叉树 3.放到TreeSet集合的元素等同于放到TreeMap集合的Key部分 4.Tre ...

随机推荐

  1. 使用vs2015搭建Asp.net Core

    准备工具    1.首先得安装vs2015 并且升级至 update3及以上  2.安装.net core sdk.附上官网下载地址 http://www.microsoft.com/net/down ...

  2. css系列:input的placeholder在safari下设置行高失效

    在项目中遇到input的placeholder在safari下设置行高失效的问题,问度娘后未得治原因,倒是有解决办法: 方法一:使用padding使提示文字居中,如果font-size:14px,UI ...

  3. kafka环境

    二.环境搭建 参考:http://kafka.apache.org/documentation.html#quickstartStep 1: 下载Kafkawget http://mirrors.no ...

  4. Docker改名为Moby了吗?

    背景 在DockerCon17上,Docker发布了两个新的开源项目LinuxKit和Moby.而原来在Github上托管的docker也随着PR #32691的合入正式变为Moby.这究竟是什么情况 ...

  5. 2017年4月 TIOBE 编程语言排名

    2017年4月 TIOBE 编程语言排名 Hack是Facebook 在三年推出的PHP方言,在2017年4月首次进入TIOBE编程语言排行榜前50位. Hack原是Facebook的内部项目,与20 ...

  6. onmouseover事件

    根据教学视频写了个onmouseover事件: <!DOCTYPE html> <html> <head> <meta charset="UTF-8 ...

  7. Liunx的DHCP配置

    1.DHCP简介 (1)DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个简化主机IP地址分配管理的TCP/IP标准协议,用户可以利用DHCP服 ...

  8. LeanCloud 调研报告

    LeanCloud 是一家做后端即服务(BaaS)的厂商,目标是让移动互联网开发者能更加方便的开发应用. 出于工作关系,对 leancloud 进行了一番调研:主要目标是学习其后端即服务的产品化思路等 ...

  9. JQuery获取元素类名

    一般而言,JQuery可以利用attr来获取元素的属性值, 1.$("元素").attr("属性");                //获取指定属性的值 2. ...

  10. 不同浏览器的margin值与padding值

    IE-7: 有默认外边距margin样式的元素: dd,menu, ol, ul, blockquote, body, dd, dl, form, h1-6, ul 有默认内边距padding样式的元 ...