Map,是一个接口,是以键值对的方式存储的,并且键是无序且不可重复的。Map和Collection没有什么关系,Map是一对一对的存,而Collection是一个一个的存。

下面有一个子接口:SortedMap,key无序不可重复,但是可以按照大小排序。这个key等同于SortedSet。有一个实现类TreeMap,TreeMap中的key就是一个TreeSet,key要实现Compareble接口,或者单独写个比较器Comparator。

有两个实现类:

HashMap:哈希散列表,其中的key等同于一个Set集合,且要重写hashCode()和equals()。

HashTable:

Map中,如果key重复了,value采用覆盖的方式!!!后面put的覆盖前面的

HashMap默认初始化容量16,加载因子0.75

public class HashMapTest {
public static void main(String[] args){
Map map = new HashMap();
map.put("1", "kobe");
map.put("2", "kd");
map.put("3", "tracy");
map.put("4", "duncan");
map.put("1", "koo"); //获取所有值
Iterator it = map.values().iterator();
while(it.hasNext()){
System.out.println(it.next());
} //获取所有键
Iterator it2 = map.keySet().iterator();
while(it2.hasNext()){
Object key = it2.next();
Object value = map.get(key);
System.out.println(key + "--->" + value);
} //将map转换成set的过程
Set setEntry = map.entrySet();
Iterator it3 = setEntry.iterator();
while (it3.hasNext()){
System.out.println(it3.next());
}
}
}

koo
kd
tracy
duncan
1--->koo
2--->kd
3--->tracy
4--->duncan
1=koo
2=kd
3=tracy
4=duncan

HashTable

默认初始化容量11,加载因子0.75

Properties是他的一个子类。同样键不能重复,而且重复则覆盖的原则,还有就是键值对都是String类型。

SortedMap中的key排序的实现

public class SortedMapTest {

    public static void main(String[] args) {
Map map = new TreeMap();
Product p1 = new Product("apple" , 7.0);
Product p2 = new Product("banana" , 5.0);
Product p3 = new Product("mango" , 8.0);
Product p4 = new Product("pear" , 4.0);
Product p5 = new Product("orange" , 3.5); map.put(p1, 10.0);
map.put(p2, 3.0);
map.put(p3, 9.0);
map.put(p4, 3.3);
map.put(p5, 7.2); Set set = map.keySet();
Iterator it = set.iterator();
while (it.hasNext()){
Product key = (Product)it.next();
double value = (double)map.get(key);
System.out.println(key.name + "---" + key.price + "---" + value +"kg");
}
} } class Product implements Comparable{
String name;
double price; public Product(String name , double price){
this.name = name;
this.price = price;
} @Override
public int compareTo(Object o) {
double p1 = this.price;
double p2 = ((Product)o).price; if (p1 > p2)
return 1;
else if (p1 < p2)
return -1;
else
return 0;
}
}

orange---3.5---7.2kg
pear---4.0---3.3kg
banana---5.0---3.0kg
apple---7.0---10.0kg
mango---8.0---9.0kg

Map笔记的更多相关文章

  1. Map笔记总结

    Map :存储的是键值对,一对一对出现的,要保证键的唯一性. Map常见的三个子类.1.HashTable 底层是哈希表结构,不能存在null的情况.该集合是线程同步的.效率低此类实现一个哈希表,该哈 ...

  2. Java map笔记

    Map 是一个键值对的集合 花和尚 豹子头 鲁智深 林冲 如果想要从map中获得值,可以根据键 Map<Key,velue> Map虽然是集合,但是和collection的接口无关 我们可 ...

  3. Java基础 - Map接口的实现类 : HashedMap / LinkedHashMap /TreeMap 的构造/修改/遍历/ 集合视图方法/双向迭代输出

    Map笔记: import java.util.*; /**一:Collection接口的 * Map接口: HashMap(主要实现类) : HashedMap / LinkedHashMap /T ...

  4. ES6笔记(6)-- Set、Map结构和Iterator迭代器

    系列文章 -- ES6笔记系列 搞ES6的人也是够无聊,把JS弄得越来越像Java.C++,连Iterator迭代器.Set集合.Map结构都出来了,不知道说什么好... 一.简单使用 1. iter ...

  5. [原创]java WEB学习笔记98:Spring学习---Spring Bean配置及相关细节:如何在配置bean,Spring容器(BeanFactory,ApplicationContext),如何获取bean,属性赋值(属性注入,构造器注入),配置bean细节(字面值,包含特殊字符,引用bean,null值,集合属性list map propert),util 和p 命名空间

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  6. [原创]java WEB学习笔记59:Struts2学习之路---OGNL,值栈,读取对象栈中的对象的属性,读取 Context Map 里的对象的属性,调用字段和方法,数组,list,map

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  7. Java学习笔记之:Java Map集合

    一.介绍 通常来说,Map是一个由键值对组成的数据结构,且在集合中每个键是唯一的. 二.笔记 /** * Map:接口. 不是collection的子类 key -value 键值对 key唯一不能重 ...

  8. STL笔记(1)map

    STL笔记(1)map STL之map ZZ from http://hi.baidu.com/liyanyang/blog/item/d5c87e1eb3ba06f41bd576cf.html 1. ...

  9. 【hadoop代码笔记】Mapreduce shuffle过程之Map输出过程

    一.概要描述 shuffle是MapReduce的一个核心过程,因此没有在前面的MapReduce作业提交的过程中描述,而是单独拿出来比较详细的描述. 根据官方的流程图示如下: 本篇文章中只是想尝试从 ...

随机推荐

  1. elasticsearch使用jetty进行简单的权限控制

    默认elasticsearch是使用netty作为http的容器,由于netty并没有权限模块,所以默认es没有任何的权限控制,直接通过http就可以进行任何操作,除非把http禁用.但如果你使用el ...

  2. circularprogressbar/smoothprogressbar开源视图使用学习

    github地址:https://github.com/castorflex/SmoothProgressBar 多彩圆形进度条和多彩水平进度条 colors.xml 定义变化的颜色内容,用gplus ...

  3. android 5.0新特性学习--视图轮廓

    ViewOutlineProvider -- 视图轮廓setOutlineProvider--可以使用View.setClipToOutline方法去剪切一个视图的outline区域.只有rectan ...

  4. Android Studio的使用(十一)--每次打开时选择项目,而不是直接进入上次项目

    1.打开的时候选择打开哪一个项目 2.需要在设置System Setting,不要勾选Reopen last project on startup项.

  5. Windows修改hosts文件及位置

    文件位置 C:\Windows\System32\drivers\etc 中的hosts文件 修改方式 指定IP 域名 192.168.66.7 www.baidu.com

  6. ASP对数据库的操作方法

    ASP与数据库-连接.写入.修改.删除.显示代码属性与方法 PageCount 属性: 决定 Recordset 对象包括多少“页”的数据.        这里的“页”是数据记录的集合,大小等于 Pa ...

  7. 字符串解析运用-将字符串分解为多个整数,求各整数之和(华为oj)

    描述 输入内容是一个字符串,输出结果为一个字符串.要求在输入的字符串中识别出多个整数单元,并且对各个整数单元求和运算,最终输出一个字符串,输出的字符串内容是对各个整数单元求和的结果.两个整数单元之间以 ...

  8. 前端HR告诉你—如何面试Web前端开发

    分享一篇HR前端面试心得: 面试前端工程师对我来说是一件非常有意思的事,因为面试过程很大程度上也是自我提升的过程.无论大公司还是小公司,之所以在如何招聘到真正有能力的,前端工程师方面会遇到同样的问题. ...

  9. Allegro PCB -内层分割,比如电源层需要分割几种电源

    内层分割,比如电源层需要分割几种电源. (1).点击Display -> Assign Color 在Option中,先取一种颜色作为高亮显示的颜色. (2).在Find中,选Net,点击mor ...

  10. SVG页面loading动态图

    https://github.com/SamHerbert/SVG-Loaders demo http://samherbert.net/svg-loaders/