备注:HashMap线程不安全,效率高,允许key、value为空

HasTable线程安全、效率低、不允许key或value为空

TreeMap在存储时会自动调用comparable方法进行排序,当key为类时可自行调用comparable接口

范例:

package cn.study.lu.four;

import java.util.TreeMap;

public class TestTreeMap {
public static void main(String[] args) {
TreeMap<Integer, String> str1 = new TreeMap<Integer, String>();

str1.put(1001, "aaa");
str1.put(333, "bbb");
str1.put(181, "ccc");
str1.put(9991, "ddd");
for (int k:str1.keySet()) {
System.out.println(k +"---"+str1.get(k));
}
System.out.println(str1);

TreeMap<emp, String> str2 = new TreeMap<emp, String>();
str2.put(new emp(1001, "张三", 10000),"aaa");
str2.put(new emp(1002, "王五", 60000),"bbb");
str2.put(new emp(1003, "里斯", 20000),"ccc");
str2.put(new emp(1004, "赵六", 20000),"ddd");
for(emp i:str2.keySet()) {
System.out.println(i+"---"+str2.get(i));
}
}
}

class emp implements Comparable<emp>{
int id;
String name;
int salary;
public emp(int id, String name, int salary) {
super();
this.id = id;
this.name = name;
this.salary = salary;
}

public String toString() {
return ("id:"+id+",name:"+name+",salary:"+salary);
}

public int compareTo(emp o) {
if (this.salary>o.salary) {
return 1;
}else if(this.salary<o.salary){
return -1;
}else if (this.id>o.id) {
return 1;
}else if(this.id<o.id){
return-1;
}else {
return 0 ;
}
}

}

TreeMap和Comparable接口的更多相关文章

  1. TreeMap——实现comparable接口并重写CompareTo方法

    public class TreeMapTest { public static void main(String[] args) { Map<Student,Integer> stude ...

  2. Map容器——TreeMap及常用API,Comparator和Comparable接口

    TreeMap及常用API ①   TreeMap类通过使用红黑树实现Map接口; ②   TreeMap提供按排序顺序存储键/值对的有效手段,同时允许快速检索; ③   不像散列(HashMap), ...

  3. TreeMap元素必须实现Comparable接口

    纠正一下,TreeMap实现一定顺序是通过Comparable接口的,而他实现元素不重复也是完全通过compareTo,而不是hashCode和equals,因为debug不会走到hashCode和e ...

  4. Java中的TreeMap、Comparable、Comparator

    我们知道HashMap的存储位置是按照key这个对象的hashCode来存放的,而TreeMap则是不是按照hashCode来存放,他是按照实现的Comparable接口的compareTo这个方法来 ...

  5. 第12条:考虑实现Comparable接口

    CompareTo方法没有在Object中声明,它是Comparable接口中的唯一的方法,不但允许进行简单的等同性比较,而且允许执行顺序比较.类实现了Comparable接口,就表明它的实例具有内在 ...

  6. Effective Java 第三版——14.考虑实现Comparable接口

    Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...

  7. 考虑实现Comparable接口

    考虑实现Comparable接口   compareTo方法没有在Object中声明.相反,它是Comparable接口中唯一的方法.compareTo方法不但允许进行简单的等同性比较,而且允许执行顺 ...

  8. Java中Comparator接口和Comparable接口的使用

    普通情况下在实现对对象元素的数组或集合进行排序的时候会用到Comparator和Comparable接口,通过在元素所在的类中实现这两个接口中的一个.然后对数组或集合调用Arrays.sort或者Co ...

  9. Java自定义排序:继承Comparable接口,重写compareTo方法(排序规则)

    代码: 1 import java.util.*; 2 3 /** 4 * 学习自定义排序:继承Comparable接口,重写compareTo方法(排序规则). 5 * TreeMap容器的Key是 ...

随机推荐

  1. SQLserver基础--连接查询、联合查询、索引

    一.子查询补充: Exists的用法:select*from haha where exists(select*from bumen where bumen.code=haha.bumen,and b ...

  2. POJ2395 Out of Hay(求最小生成树中最大的边权,Kruskal)

    POJ2395 Out of Hay 寻找最小生成树中最大的边权. 使用 Kruskal 求解,即求选取的第 \(n-1\) 条合法边. 时间复杂度为 \(O(e\log e)\) . #includ ...

  3. React-Native 之 GD (二十)removeClippedSubviews / modal放置的顺序 / Android 加载git图\动图 / 去除 Android 中输入框的下划线 / navigationBar

    1.removeClippedSubviews 用于提升大列表的滚动性能.需要给行容器添加样式overflow:’hidden’.(Android已默认添加此样式)此属性默认开启 这个属性是因为在早期 ...

  4. spring Cloud 之 Eureka、Feign、Hystrix、Zuul、Config、Bus

    一.服务发现——Netflix Eureka Eureka包含两个组件: Eureka Server和Eureka Client 1.创建Eureka Server服务端 (1).引入依赖 父工程po ...

  5. postman从body,headers,data中获取token后回写做全局变量

    设置全局变量

  6. sql中unique和distinct

    在SQL语法里面,有unique和distinct两个关键字, unique是distinct的同义词,功能完全相同.distinct是标准语法,其他数据库 sql server,db2,oracle ...

  7. Struts2异常:HTTP Status 404 - There is no Action mapped for action name addBook.

    HTTP Status 404 - There is no Action mapped for action name addBook. 在地址栏进行访问的时候,出现了这个错误信息,导致出现此异常的原 ...

  8. Spring MVC-学习笔记(2)DispatcherServlet、@Controller、@RequestMapping、处理方法参数类型、可返回类型、Model、ModelMap、ModelAndView

    1.前端控制器org.springframework.web.servlet.DispatcherServlet 所有的请求驱动都围绕这个DispatcherServlet来分派请求.springMV ...

  9. Java设计模式——单例模式(static修饰)

    1.类的构造器私有化 2.本类内部创建对象(用本类内部public static静态方法返回该静态对象) 3.创建静态变量指向该类. 饿汉式和懒汉式的差异: 1.创建对象的时机不同!(饿汉模式在使用静 ...

  10. fanc委托在项目中使用

    一,上代码 using System; namespace FuncDemo { class Program { static void Main(string[] args) { //无参数的fan ...