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. Linux强制用户首次登录修改密码

    一个执着于技术的公众号 地方 前言 Linux强制用户首次登陆修改密码,这应该是RHCE认证中用户管理部分, 属于很基础的内容了.可是我忘记了,所以就有了下面的记录~ 实验过程 1.创建用户并设置登录 ...

  2. 【mq】从零开始实现 mq-09-消费者拉取消息 pull message

    前景回顾 [mq]从零开始实现 mq-01-生产者.消费者启动 [mq]从零开始实现 mq-02-如何实现生产者调用消费者? [mq]从零开始实现 mq-03-引入 broker 中间人 [mq]从零 ...

  3. 【深入理解计算机系统CSAPP】第六章 存储器层次结构

    6 存储器层次结构 存储器系统(memory system)是一个具有不同容量.成本和访问时间的存储设备的层次结构.CPU 寄存器保存着最常用的数据.靠近 CPU 的小的.快速的高速缓存存储器(cac ...

  4. unity---公共模块MonoController

    公共模块 如果有很多类使用Update()函数,会导致性能浪费 如果函数统一在一个Update()中执行 代码 上述,需要将脚本挂载到物体上, 故新建了一个管理类MonoMgr Mgr另外的作用 可以 ...

  5. Ubuntu的一些软件源

    参考别人的,自己记录一下,怕丢失 修改方法:vim /etc/apt/sources.list,然后添加下面对应的代码区 台湾的官方源 deb http://tw.archive.ubuntu.com ...

  6. Java类包

    学习内容:Java类包 一.Java类包 1.一个完整的类名需要包名和类名的组合,每一个类都隶属于一个包. 例:完整类名--java.sql.Date 2.同一个包中类相互访问时可以不指明包名. 3. ...

  7. [2021-TKK 暑期训练第一场] 1585:下馆子-3

    题目做了超链接 参考官方题解,作部分优化 下馆子 -3 题意: 给定n组数据,由name,time构成 当只有一个最大值时,输出该同学 当不止有一个最大值时,输出最先大于等于max次的同学 题解: 考 ...

  8. Crane-scheduler:基于真实负载进行调度

    作者 邱天,腾讯云高级工程师,负责腾讯云 TKE 动态调度器与重调度器产品. 背景 原生 kubernetes 调度器只能基于资源的 resource request 进行调度,然而 Pod 的真实资 ...

  9. ARM学习1

    ARM相关概念 1.ARM的发展史 1. 1978年,CPU公司 Cambridge processing Unit 2. 1979年 Acorn 3. 1985年, 32位,8MHz, 使用的精简指 ...

  10. bintree

    Python实现二叉树的建立与遍历 创建(二叉)树节点类 class Node: def __init__(self,data,l=None,r=None): self.val = data self ...