1.Map概述

Map与Collection并列存在。用来保存具有映射关系的数据:Key-Value

Map 中的 key 和  value都能够是不论什么引用类型的数据
Map 中的 key 用Set来存放。不同意反复,所以Map中的Set类型须要重写hashCode()和equals()方法,由于引用对象是通过这两个方法来保证Set的唯一性。
Map中的key 和 value之间存在单向一对一关系,即通过指定的key总能找到唯一的、确定的 value。


LinkedHashMap用一个链表维护加入进Map的顺序,遍历得到的顺序和加入顺序一致。

2.Map中的主要方法

package org.tizen.test;

import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set; import org.junit.Test; /*
*
Object put(Object key,Object value) 向Map中加入一个key以及value
Object remove(Object key) 删除制定的 key以及相应的value,即删除制定的key-value对
void putAll(Map t)
void clear()
Object get(Object key) 获取制定的key的value值,如无。返回null
boolean containsKey(Object key)
boolean containsValue(Object value)
int size()
boolean isEmpty()
boolean equals(Object obj) */
public class TestMain { @Test  
    public void TestMapAPI()  
    {
//遍历得到的顺序和加入顺序不一致
Map map = new HashMap<>();
        map.put("image", "/opt/image.jpg");
        map.put("title", "setting");
        map.put("size", 80);
 m.put("image", "/opt/image1.jpg");//覆盖之前的map.put("image", "/opt/image.jpg");
System.out.println(map.size());//3
        System.out.println(map.get("image"));
        System.out.println(map.get("title"));
        System.out.println(map.get("size"));
        boolean b = map.containsValue("setting");   
        System.out.println(b);//true   
}
}
@Test
/*
* * 元视图操作的方法:Set keySet() Collection values() Set entrySet()
*/
public void Test2() {
Map m = new HashMap();
m.put("123a", 97);
m.put("b", 98);
m.put("AbC", 1221);
m.put(null, 1);
// 1.得到Map的KeySet,遍历
Set s = m.keySet();
System.out.println("遍历set");
for (Object o : s) {
System.out.println(o);
} // 2.遍历values
Collection c = m.values();
System.out.println("增强for循环遍历values");
for (Object o : c) {
System.out.println(o);
}
System.out.println("迭代器遍历values");
Iterator i = c.iterator();
while (i.hasNext()) {
System.out.println(i.next());
}
// 3.遍历key-value对 by 增强for循环遍历
Set entry1 = m.entrySet(); for (Object o : entry1) {
// need cast
Map.Entry me = (Map.Entry) o;
System.out.println(me.getKey() + ":" + me.getValue());
}
// 4.遍历key-value对 by iterator
Set entrySet = m.entrySet();
Iterator iterator = entrySet.iterator();
while (iterator.hasNext()) {
Map.Entry entry2 = (Map.Entry) iterator.next();
System.out.println(entry2.getKey() + ":" + entry2.getValue());
} }

@Test
// 自然排序
public void test3() {
Map map = new LinkedHashMap();
map.put("AA", 213);
map.put("BB", 45);
map.put(123, "CC");
map.put(null, null);
map.put("AABB", 89);
Set set1 = map.keySet();
for (Object obj : set1) {
System.out.println(obj + ":" + map.get(obj));
}
}

@Test
public void test4() {
Map map = new LinkedHashMap();
map.put("AA", 213);
map.put("BB", 45);
map.put(123, "CC");
map.put(null, null); Set<Map.Entry> set = map.entrySet();
Iterator it = set.iterator();
while (it.hasNext()) {
Map.Entry m = (Map.Entry) it.next();
System.out.println(m.getKey() + " = " + m.getValue());
}
}

最新文章

  1. 2015年最好的PHP框架调查统计
  2. Windows &amp; Office完美结合,助力办公
  3. Java Session超时设置
  4. Linux下安装PHP
  5. PHP mkdir 方法 创建 0777 权限的目录问题
  6. Android开发报错系列(一),java.lang.NullPointerException,at android.widget.ListView.setupChild
  7. angularJS快速入门
  8. GRUB2配置详解:默认启动项,超时时间,隐藏引导菜单,配置文件详解,图形化配置
  9. DotNetCore跨平台~linux上还原自主nuget包需要注意的问题
  10. NDK编程的一个坑—Arm平台下的类型转换
  11. 菜鸟Vue学习笔记(一)
  12. js 对象的_proto_属性 和函数的prototype属性分析
  13. [Unity动画]02.动画播放
  14. C#爬取京东手机数据+PowerBI数据可视化展示
  15. 关于阅读JDK源码的准备
  16. iOS 静态库和动态库(库详解)
  17. 本地连接VM virtualBox ubuntu16.04 中的Mysql数据库
  18. 20145312 《网络对抗》PC平台逆向破解:注入shellcode和 Return-to-libc 攻击实验
  19. 【BZOJ1176】Mokia(CDQ分治)
  20. 【BZOJ3289】Mato的文件管理 莫队算法+树状数组

热门文章

  1. Ajax跨域问题---jsonp
  2. Web框架之Django_08 重要组件(form组件、cookie和session组件)
  3. js对象,数组,字符串的操作
  4. Makefile文件中的sed介绍
  5. PAT Basic 1055
  6. Hive 执行查询语句报错,由于内存空间不足导致
  7. sso简单原理及实现
  8. 自定义iOS上双击Home键图切换
  9. [luoguP2051] [AHOI2009]中国象棋(DP)
  10. Caffe的Solver参数设置