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));
}
}
}
TreeMap集合特点、排序原理的更多相关文章
- TreeMap集合怎样依照Value进行排序
------- android培训.java培训.期待与您交流! ---------- 我们知道,TreeMap集合是依照Key进行排序的,怎样依照Value进行排序呢?如今有一个TreeMap集合 ...
- java基础36 双例集合Map下的HashMap和TreeMap集合
单例集合体系: ---------| collection 单例集合的根接口--------------| List 如果实现了list接口的集合类,具备的特点:有序,可重复 注:集合 ...
- java集合对象实现原理
1.集合包 集合包是java中最常用的包,它主要包括Collection和Map两类接口的实现. 对于Collection的实现类需要重点掌握以下几点: 1)Collection用什么数据结构实现? ...
- TreeMap集合根据指定元素,进行删除和修改的两种方式实现及bug梳理
TreeMap根据key中的指定元素进行删除修改的两种方式实现及注意事项: 方式一:利用增强for进行删除和修改 总结:逻辑简单,但是局限性太强,如果排序规则是从小到大进行排序的,则该方法不能进行删除 ...
- 对map集合进行排序
今天做统计时需要对X轴的地区按照地区代码(areaCode)进行排序,由于在构建XMLData使用的map来进行数据统计的,所以在统计过程中就需要对map进行排序. 一.简单介绍Map ...
- List泛型集合对象排序
本文的重点主要是解决:List<T>对象集合的排序功能. 一.List<T>.Sort 方法 () MSDN对这个无参Sort()方法的介绍:使用默认比较器对整个List< ...
- Java中TreeMap集合讲解
1.TreeSet介绍 TreeSet是一个有序集合,可以以任意顺序将元素插入到集合中,在对集合进行遍历的时候,每个元素将自动按照排序后的顺序呈现.底层使用的是二叉树(更具体点是红黑树)实现,对于元素 ...
- wpf 导出Excel Wpf Button 样式 wpf简单进度条 List泛型集合对象排序 C#集合
wpf 导出Excel 1 private void Button_Click_1(object sender, RoutedEventArgs e) 2 { 3 4 ExportDataGrid ...
- java进阶(31)--TreeSet集合、TreeMap集合、自平衡二叉树
一.TreeSet集合简单 1.TreeSet集合底层是一个TreeMap 2.TreeMap集合底层是一个二叉树 3.放到TreeSet集合的元素等同于放到TreeMap集合的Key部分 4.Tre ...
随机推荐
- C#事物
执行ADO.NET事务包含四个步骤,分别为: ①调用SqlConnection对象的BeginTransaction()方法,(只调用这个方法前,要打开数据库连接,否则将会出现异常) 创建一个SqlT ...
- yii框架后台过滤器的使用 安全防护
Yii过滤器简介 过滤器是一段代码,可被配置在控制器动作执行之前或之后执行.例如, 访问控制过滤器将被执行以确保在执行请求的动作之前用户已通过身份验证:性能过滤器可用于测量控制器执行所用的时间. 一个 ...
- Mvc Ajax提交多个checkbox,也说绑定和提交select
Ajax Mvc的 checkbox 后端必须是List<T> ,T是ID类型,一般int 或guid 模型必须初始化List<T> 防止客户端没有提交任何值时空引用的问题,如 ...
- Linux基础(4)
Linux基础(四) 通过前面的知识的学习,来现学现卖咯! 1.题目:集群搭建 1.1.部署nginx反向代理三个web服务,调度算法使用加权轮询: 1.2.所有web服务使用共享存储nfs,保证所有 ...
- waiting for spring......
世间哪得双全法,不负如来不负卿....<仓央嘉措>
- Python数据结构与循环语句
# Python数据结构与循环语句: 首先编程是一项技能,类似跑步,期初不必在意细节,能使用起来就行,等学的游刃有余了再回过头来关注细节问题也不迟. 关于买书: 学会python之后,才需要买书 ...
- TP5学习基础一:增删改查小demo
①TP5--增删改查简单的demo 我先吐槽一下:因为工作需要研究tp5,去官网看了一下哎呦,资源挺多挺全啊!然后下载唯一免费的官方教程,我曹pdf打开533页.讲的很细但是开发能等看完才做吗?看到精 ...
- ionic创建项目遇到的各种问题
前提:执行创建语句的前提是ionic环境已经装好,开始执行ionic start myApp blank. 提示已经有同名项目,是否覆盖.这里创建的是一个blank(空) 的ionic项目.还要两种是 ...
- Layout基本属性总结
在Android中,共有五种布局方式,分别是:FrameLayout(框架布局),LinearLayout (线性布局),GridLayout(网格布局),RelativeLayout(相对布局),T ...
- vue2.0结合Element实现select动态控制input禁用
今天有一个盆友问小颖,怎么实现用select动态控制input禁用,也就是说,input默认是可编辑的,但是每当我选一次select,input就会变成禁用,虽然小颖不知道她为什么这样做,因为小颖觉得 ...