Map 查找表

Map体现的结构是一个多行两列的表格,其中左列称为key,右列称为value.

  • Map总是成对保存数据,并且总是根据key获取对应的value.因此我们可以将查询的条件作为key查询对应的结果作为value保存到Map中.
  • Map有一个要求:key不允许重复(equals比较的结果)

java.util.Map接口,是所有Map的顶级接口,规定了Map的相关功能.

常用实现类:

  • java.util.HashMap:称为散列表,使用散列算法实现的Map,当今查询速度最快的数据结构.
  • java.util.TreeMap:使用二叉树实现的Map
package map;

import java.util.HashMap;
import java.util.Map; /**
* java.util.Map接口 查找表
* Map体现的结构像是一个多行两列的表格,其中左列称为key,右列称为value
* Map总是成对儿(key-value键值对)保存数据,并且总是根据key获取其对应的value
*
* 常用实现类:
* java.util.HashMap:称为散列表,使用散列算法实现的Map,当今查询速度最快的
* 数据结构。
*/
public class MapDemo {
public static void main(String[] args) {
Map<String,Integer> map = new HashMap<>();
/*
V put(K k,V v)
将给定的键值对儿存入Map
Map有一个要求,即:Key不允许重复(Key的equals比较)
因此如果使用重复的key存入value,则是替换value操作,此时put方法
的返回值就是被替换的value。否则返回值为null。
*/
/*
注意,如果value的类型是包装类,切记不要用基本类型接收返回值,
避免因为自动拆箱导致的空指针
*/
Integer value = map.put("语文",99);
System.out.println(value);//null
map.put("数学",98);
map.put("英语",97);
map.put("物理",96);
map.put("化学",98);
System.out.println(map); value = map.put("物理",66);
System.out.println(value);//96,物理被替换的值
System.out.println(map); /*
V get(Object key)
根据给定的key获取对应的value。若给定的key不存在则返回值为null
*/
value = map.get("语文");
System.out.println("语文:"+value); value = map.get("体育");
System.out.println("体育:"+value);//null int size = map.size();
System.out.println("size:"+size);
/*
V remove(Object key)
删除给定的key所对应的键值对,返回值为这个key对应的value
*/
value = map.remove("语文");
System.out.println(map);
System.out.println(value); /*
boolean containsKey(Object key)
判断当前Map是否包含给定的key
boolean containsValue(Object value)
判断当前Map是否包含给定的value
*/
boolean ck = map.containsKey("英语");
System.out.println("包含key:"+ck);
boolean cv = map.containsValue(97);
System.out.println("包含value:"+cv);
}
}

Map的遍历

Map支持三种遍历方式:

  • 遍历所有的key
  • 遍历所有的键值对
  • 遍历所有的value(相对不常用)
package map;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set; /**
* Map的遍历
* Map提供了三种遍历方式
* 1:遍历所有的key
* 2:遍历每一组键值对
* 3:遍历所有的value(不常用)
*/
public class MapDemo2 {
public static void main(String[] args) {
Map<String,Integer> map = new HashMap<>();
map.put("语文",99);
map.put("数学",98);
map.put("英语",97);
map.put("物理",96);
map.put("化学",98);
System.out.println(map);
/*
遍历所有的key
Set keySet()
将当前Map中所有的key以一个Set集合形式返回。遍历该集合就等同于
遍历了所有的key
*/
Set<String> keySet = map.keySet();
for(String key : keySet){
System.out.println("key:"+key);
} /*
遍历每一组键值对
Set<Entry> entrySet()
将当前Map中每一组键值对以一个Entry实例形式存入Set集合后返回。
java.util.Map.Entry
Entry的每一个实例用于表示Map中的一组键值对,其中有两个常用方法:
getKey()和getValue()
*/
Set<Map.Entry<String,Integer>> entrySet = map.entrySet();
for(Map.Entry<String,Integer> e : entrySet){
String key = e.getKey();
Integer value = e.getValue();
System.out.println(key+":"+value);
}
/*
JDK8之后集合框架支持了使用lambda表达式遍历。因此Map和Collection都
提供了foreach方法,通过lambda表达式遍历元素。
*/
map.forEach(
(k,v)-> System.out.println(k+":"+v)
); /*
遍历所有的value
Collection values()
将当前Map中所有的value以一个集合形式返回
*/
Collection<Integer> values = map.values();
// for(Integer i : values){
// System.out.println("value:"+i);
// }
/*
集合在使用foreach遍历时并不要求过程中不能通过集合的方法增删元素。
而之前的迭代器则有此要求,否则可能在遍历过程中抛出异常。
*/
values.forEach(
i -> System.out.println("value:"+i)
);
}
}

day10 Map_查找与遍历的更多相关文章

  1. 总结:WPF中ResourceDictionary资源文件的查找和遍历方法

    原文:总结:WPF中ResourceDictionary资源文件的查找和遍历方法 一.查找包含制定关键字的资源 ResourceDictionary GetThemeDictionary()     ...

  2. Java对二叉搜索树进行插入、查找、遍历、最大值和最小值的操作

    1.首先,须要一个节点对象的类.这些对象包括数据.数据代表存储的内容,并且还有指向节点的两个子节点的引用 class Node { public int iData; public double dD ...

  3. lqb 基础练习 查找整数 (遍历)

    基础练习 查找整数 时间限制:1.0s   内存限制:256.0MB     问题描述 给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个. 输入格式 第一行包含一个整数n. 第二行包含 ...

  4. python和pywin32实现窗口查找、遍历和点击

    Pywin32是一个Python库,为python提供访问Windows API的扩展,提供了齐全的windows常量.接口.线程以及COM机制等等. 1.通过类名和标题查找窗口句柄,并获得窗口位置和 ...

  5. C++ map操作——插入、查找、遍历

    c++ map 操作学习 #include <iostream> #include <map> #include <string> #include <vec ...

  6. 数据结构系列之2-3-4树的插入、查找、删除和遍历完整版源代码实现与分析(dart语言实现)

    本文属于原创,转载请注明来源. 在上一篇博文中,详细介绍了2-3树的操作(具体地址:https://www.cnblogs.com/outerspace/p/10861488.html),那么对于更多 ...

  7. 浅谈算法和数据结构: 十 平衡查找树之B树

    前面讲解了平衡查找树中的2-3树以及其实现红黑树.2-3树种,一个节点最多有2个key,而红黑树则使用染色的方式来标识这两个key. 维基百科对B树的定义为“在计算机科学中,B树(B-tree)是一种 ...

  8. 常用查找数据结构及算法(Python实现)

    目录 一.基本概念 二.无序表查找 三.有序表查找 3.1 二分查找(Binary Search) 3.2 插值查找 3.3 斐波那契查找 四.线性索引查找 4.1 稠密索引 4.2 分块索引 4.3 ...

  9. [Data Structure & Algorithm] 七大查找算法

    查找是在大量的信息中寻找一个特定的信息元素,在计算机应用中,查找是常用的基本运算,例如编译程序中符号表的查找.本文简单概括性的介绍了常见的七种查找算法,说是七种,其实二分查找.插值查找以及斐波那契查找 ...

随机推荐

  1. 1.2 Linux是什么,有哪些特点?

    与大家熟知的 Windows 操作系统软件一样,Linux 也是一个操作系统软件,其 logo 是一只企鹅(如图 1 所示).与 Windows 不同之处在于,Linux 是一套开放源代码程序的.可以 ...

  2. JS中的 && 、|| 、??、?. 运算符

    javascript有不少好用的运算符,合理的使用可以大大提高工作效率,以下简单介绍了4种,具体如下: && 逻辑与运算(&&)是 AND 布尔操作.只有两个操作数都为 ...

  3. line-height和height关系

    如图所示,line-height = font-size + 上下本行距.上下半行距总是相等.font-size居于中间.当font-size值固定时,line-height越大,半行距越大.所以当l ...

  4. 改善java程序

    1.用偶判断,不用奇判断.因为负数会出错. // 不使用 String str = i + "->" + (i%2 == 1? "奇数": "偶 ...

  5. redis 2 主从和哨兵

    主从: 概念:将一台redis服务器数据复制到其他redis服务器,前者是master,后者是slave.数据复制是单向,从主节点复制到从节点.master以写为主,slave以读为主一个zhu主节点 ...

  6. 561. Array Partition I - LeetCode

    Question 561. Array Partition I Solution 题目大意是,给的数组大小是2n,把数组分成n组,每组2个元素,每个组取最小值,这样就能得到n个值,怎样分组才能使这n个 ...

  7. css页面样式初始化

    为什么? 同一个样式,在各个浏览器的默认样式可能不同,所以需要统一初始化,同一个页面在不同浏览器能正常显示. @charset "utf-8"; /*css reset*/ bod ...

  8. javaweb开发案例

    1.实验3 (1)当运行Servlet时,碰到"空指针异常"错误怎么处理? 答:应提示用户操作有误,或设置对象值为空字符串或一个默认值,或是不执行某操作,直接跳转到其他处理中. ( ...

  9. js 定时器 Timer

    1 /* Timer 定时器 2 3 parameter: 4 func: Function; //定时器运行时的回调; 默认 null 5 speed: Number; //延迟多少毫秒执行一次 f ...

  10. 面试官:Dubbo是什么,他有什么特性?

    哈喽!大家好,我是小奇,一位热爱分享的程序员 小奇打算以轻松幽默的对话方式来分享一些技术,如果你觉得通过小奇的文章学到了东西,那就给小奇一个赞吧 文章持续更新 一.前言 书接上回,今天还是过周末,虽然 ...