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. hdu 3345 War Chess

    War Chess Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Sub ...

  2. ubuntu下如何安装及使用 pysvn-workbench

    网上对于 pysvn-workbench 的教程几乎没有,没办法,只好去官网自学了,现在能正常上传资料了,写点东西,以免今后忘了 安装方面:在新立得中查找svn-workbench,subversio ...

  3. 51nod 修改数组

    修改数组 给出一个整数数组A,你可以将任何一个数修改为任意一个正整数,最终使得整个数组是严格递增的且均为正整数.问最少需要修改几个数? Input 第1行:一个数N表示序列的长度(1 <= N  ...

  4. 关于Tcpreplay

    tcpprep -p -o /root/Desktop/ZS/Tcpreplay/cache_test.cache -i /root/Desktop/ZS/Tcpreplay/9.17.pcap tc ...

  5. Chapter 1 First Sight——4

    Charlie gave me an awkward, one-armed hug when I stumbled my way off the plane. 当我让我蹒跚的从飞机上下来,查理斯单手给 ...

  6. thinkphp5.0 生命周期

    1.入口文件 // 应用入口文件 index.php // 定义项目路径 define('APP_PATH', __DIR__ . '/../application/'); // 加载框架引导文件 r ...

  7. springMVC和spring的集成

    主要是2点 1.web.xml里 配置spring所需的listener 2. 新增applicationContext.xml, 配置注入的bean 3. 使用注解获取bean @Resource ...

  8. python2.7 与 go1.2简单性能比较

    过完年刚上班,项目还没有开始,对于即将到来的项目,想尝试是否可以找到一个开发效率接近python,运行效率接近静态语言的编程语言,选择基本就是scala和go,公司的技术组成基本都是c派的,scala ...

  9. vs2008安装opencv2.4.6

    最近安装opencv2.4.6,发现犯了一个很愚蠢的错误,在此记录一下. opencv的头文件包含应该位于build文件夹内,而我误将opencv文件夹下的include包含了进去,造成无法找到头文件 ...

  10. servlet与CGI的区别

    与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以 ...