java入门 -- Map(双列)集合详解

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.TreeMap;

/* * 双列集合: 

* 在现实生活中,有些关系是以映射的形式成对存在的。 * 

 * ----|Map 实现了Map接口的类,特点是存储的数据都是以键值对的形式存储的。

 * ------|HashMap底层也是基于Hash表实现的 

* ------|TreeMap  基于二叉树的数据结构实现的,会对元素的键进行排序存储 

* ------|HashTable 底层依赖于Hash表实现的,与HashMap实现一致的,但是HashTable是线程安全的,效率没有HashMap高 * 

 * HashMap * 存储原理: 在HashMap添加元素的时候,首先调用键的hashCode方法得到元素的a哈希码值,然后经过一系列运算就可以得到 * 元素在hash表中的存储位置.可能的情况有两种:

 *  1. 如果算出的位置没有任何元素的存储,那么该元素可以直接存储;

 *  2. 如果算出的位置目前已经存在其他的元素,还会调用元素的equals方法进行比较,如果返回的是false,该元素允许被存储,如果 *    返回true,那么该元素不允许被存储。 *  

  * TreeMap * 注意事项: * 

1. 往TreeMap天津元素的时候,如果键具备自然顺序,就可以安装键的自然顺序排序:

 *      2. 如果TreeMap的元素无自然顺序的特性,那么键所属的类必须要实现Comparable接口,把键的比较规则定义在ComparaTo方法中。

 *      3. 往TreeMap中添加元素,如果元素所属的类没有实现Comparable接口,并且元素不具备自然属性,那么可以出传入一个自定义比较器。 *

  */

class Book implements Comparable{

String name; //书名

String date; //日期

public Book(String name, String date){

this.name = name;

this.date = date;

}@Overridepublic int compareTo(Book o)

 {// TODO Auto-generated method stub

//方法一:使用String方法的CompraT0方法

//return this.date.compareTo(o.date);

//方法二:使用Date类的CompareTo方法

SimpleDateFormat sdf = new SimpleDateFormat("yyyy--MM-dd");

Date date1 = null;

Date date2 = null;

try {

date1 = sdf.parse(this.date);

date2 = sdf.parse(o.date);

catch (ParseException e) {

// TODO Auto-generated catch blocke.printStackTrace();

}

return date2.compareTo(date1);

}

public String toString(){

return "["+ this.name + ","+ this.date +"]";

}

}

public class Demo1 {public static void main(String[] args){TreeMapm = new TreeMap();

m.put(new Book("浪潮之巅", "2012-11-05"), "10003");

m.put(new Book("数学之美", "2010-10-24"), "200001");

m.put(new Book("三体1", "2006-9-10"), "10001");

m.put(new Book("巨婴", "2013-7-01"),  "100056");

System.out.println(m);

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,195评论 18 399
  • java笔记第一天 == 和 equals ==比较的比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量...
    jmychou阅读 5,431评论 0 3
  • 第十天 权限修饰符 public protected default private 同一类 true true ...
    炙冰阅读 3,579评论 0 1
  • Map(映射,存储的是“键-值”映射表,“键”是不能重复的) 如果键重复,则相当于修改对应键的值。 Map接口定义...
    向日花开阅读 11,353评论 0 3
  • 体验软件:番茄土豆 Android(免费版) 产品定位: 番茄土豆是一款时间管理应用,主打功能是番茄时钟。核心功能...
    风行宇内阅读 5,414评论 2 1

友情链接更多精彩内容