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());
}
}

JavaSE Map的使用的更多相关文章

  1. JavaSE Map集合

    Map集合 在Map集合中保存的数据为一组数据,其中:一个数据为key,另外一个数据为value.而key和value具备对应的关系,在集合中它们属于一组(一对)数据.而每个key只能对应唯一的一个v ...

  2. Map-API及详解

    常用API 类别 方法 增加 put.putAll 删除 remove.removeAll.clear 查询 get 取值 entrySet.keySet.values 长度 size 判断 cont ...

  3. mybatis中的动态SQL语句

    有时候,静态的SQL语句并不能满足应用程序的需求.我们可以根据一些条件,来动态地构建 SQL语句. 例如,在Web应用程序中,有可能有一些搜索界面,需要输入一个或多个选项,然后根据这些已选择的条件去执 ...

  4. JavaSE中Map框架学习笔记

    前言:最近几天都在生病,退烧之后身体虚弱.头疼.在床上躺了几天,什么事情都干不了.接下来这段时间,要好好加快进度才好. 前面用了三篇文章的篇幅学习了Collection框架的相关内容,而Map框架相对 ...

  5. JavaSE集合(十)之Map

    前面给大家介绍了集合家族中的Collection家族,这一篇给大家分享的是集合中的另一个家族就是Map家族.以前的时候学习Map的时候没有很认真的去学习,我觉得很多东西还是不是很清楚. 这次我将总结的 ...

  6. JavaSE集合(八)之Map

    前面给大家介绍了集合家族中的Collection家族,这一篇给大家分享的是集合中的另一个家族就是Map家族.以前的时候学习Map的时候没有很认真的去学习,我觉得很多东西还是不是很清楚. 这次我将总结的 ...

  7. javaSE学习笔记(11)--- Map

    javaSE学习笔记(11)--- Map 1.Map集合 现实生活中,我们常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种一一对应的关系,就叫做映射.Jav ...

  8. [010] - JavaSE面试题(十):集合之Map

    第一期:Java面试 - 100题,梳理各大网站优秀面试题.大家可以跟着我一起来刷刷Java理论知识 [010] - JavaSE面试题(十):集合之Map 第1问:HashMap和HashTable ...

  9. JavaSE(十)之Map总结

    上一篇是总结了Collection接口的各种实现类,这一篇我将分享的是Map的总结,希望大家点评! 一.Map接口 1.1.为什么Collection不能满足集合的所有功能? Collection接口 ...

随机推荐

  1. 【php】 php的注释问题,单行注释和多行注释与php结束符的关系

    单行注释仅仅注释到行末或者当前的 PHP 代码块,视乎哪个首先出现.这意味着在 // ... ?> 或者 # ... ?> 之后的 HTML 代码将被显示出来:?> 跳出了 PHP ...

  2. 刚毕业去面试Python工程师,这几道题太难了,Python面试题No11

    写在前面 本想停一段时间这个系列,但是好多朋友给我发信息说让我继续整理下去,so,继续吧~ 第1题: docstring是什么? docstring是一种文档字符串,用于解释构造的作用.我们在函数.类 ...

  3. PyCharm 社区版创建Django项目的一个方法

    PyCharm 社区版创建项目无法选择Django等项目,只能选择Python项目. 你在进行练习的时候为了方便,可以用过期了的PyCharm专业版在可用的30分钟内创建社区版本不支持的项目,再用Py ...

  4. ubuntu14.04安装搜狗拼音以及Google-chrome

    安装搜狗拼音 1.进入https://pinyin.sogou.com/linux/选择合适版本下载: 2.直接打开deb包进行安装: 3.安装完成后,打开系统设置中语言支持选项,在键盘输入方式系统中 ...

  5. LeetCode695--岛屿的最大面积

    ''' 岛屿的最大面积 给定一个包含了一些 0 和 1的非空二维数组 grid , 一个 岛屿 是由四个方向 (水平或垂直) 的 1 (代表土地) 构成的组合.你可以假设二维矩阵的四个边缘都被水包围着 ...

  6. bs4--官方文档

    如何使用 将一段文档传入BeautifulSoup 的构造方法,就能得到一个文档的对象, 可以传入一段字符串或一个文件句柄. from bs4 import BeautifulSoup soup = ...

  7. 编辑器sublime(转)摘自网络

    一.下载和安装 Sublime Text2是一款开源的软件,不需要注册即可使用(虽然没有注册会有弹窗,但是基本不影响使用). 下载地址:http://www.sublimetext.com/,请自行根 ...

  8. 自己项目使用了ARC,项目中使用第三方库继续引用ARC

    Objective-C引入ARC(Automatic Reference Counting)后,我们经常会面对这样一种困境:自己的项目使用了ARC,却发现要使用的第三方类库是non-ARC的:又或者自 ...

  9. NYOJ 118 修路方案

    修路方案 时间限制:3000 ms  |  内存限制:65535 KB 难度:5   描述 南将军率领着许多部队,它们分别驻扎在N个不同的城市里,这些城市分别编号1~N,由于交通不太便利,南将军准备修 ...

  10. python---类接口技术

    类接口技术 扩展只是一种同超类接口的方式.下面所展示的sPecial'ze.Py文件定义了多个类,示范了一些常用技巧.Super 定义一个method函数以及一个delegate函数.Inherito ...