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. 动态规划之----我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?

    利用动态规划,一共有n列,若从左向右放小矩形,有两种放置方式: 第一种:横着放,即占用两列.此时第二行的前两个空格只能横着放,所有,总的放置次数变为1+num(2*(n-2)),其中2*(n-2)代表 ...

  2. Day05_JAVAEE系列:XML

    XML概述 1)什么是xml? xml, eXtend Markup Language, 可扩展标记语言 2) html vs xml 都由w3c组织制定的. html语法特征:语法比较松散      ...

  3. OpenCV ——遍历图像方法

    转自http://blog.csdn.net/daoqinglin/article/details/23628125 ; y < testImage->height; y++) { uch ...

  4. Android Studio的使用(八)--// TODO代码

    我们都知道Eclipse存在// TODO代码,该段代码在方法中用于标识该方法仍未完成,也可以用于作为该方法的一个快捷键.例如我们可以用于标识onClick()方法,当我们需要查找onClick()方 ...

  5. Linux通过防火墙禁止IP来防止攻击

    1. iptables -I INPUT -s 211.1.0.0 -j DROP 禁止211.1.0.0这个IP访问服务器 2. iptables -I INPUT -s 211.1.0.0 -j ...

  6. 【转】在 2016 年做 PHP 开发是一种什么样的体验?(一)

    原文: https://www.v2ex.com/t/312651 在 2016 年做 PHP 开发是一种什么样的体验?(一) 嘿,我最近接到一个网站开发的项目,不过老实说,我这两年没怎么接触编程,听 ...

  7. FZU 2170 花生的序列(动态规划)

    动态规划,转移方程为 dp[i][j] = (dp[i-1][j]+dp[i][j-1])%MOD,定义还是比较裸的,讨论一下就可以了 #include <iostream> #inclu ...

  8. Codevs 5590 A+B 问题 超级版

    5590 A+B 问题 超级版 时间限制: 1 s 空间限制: 1000 KB 题目等级 : 青铜 Bronze 题目描述 Description 不用+-*/%计算A+B 输入描述 Input De ...

  9. 二部图(二分图判定--dfs)

    题目链接:二部图 二部图 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描述 二 部图又叫二分图,我们不是求它的二分图最大匹配,也不是完美匹配,也不是多重匹配,而是证明一个图 ...

  10. Android4.0图库Gallery2代码分析(二) 数据管理和数据加载

    Android4.0图库Gallery2代码分析(二) 数据管理和数据加载 2012-09-07 11:19 8152人阅读 评论(12) 收藏 举报 代码分析android相册优化工作 Androi ...