package cn.sasa.demo3;

import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set; public class MapDemo {
public static void main(String[] args) {
/**
* Map集合 类似于 C#中的 Dictionary,存的是键值对集合,键不能重复
*
* Map接口的常用方法:
* Map接口的实现类:HashMap
*/
Map<Integer,String> map = new HashMap<Integer, String>();
//添加
map.put(1, "a");
var preObj = map.put(1, "b");//重复的键保存的是后面那个,返回被替换的值
var preObj1 = map.put(3, "a");
map.put(4, "c");
map.put(5, "u");
map.put(6, "t");
map.put(7, "e");
System.out.println(preObj); //a
System.out.println(preObj1); //null
System.out.println(map); //{1=b, 3=a, 4=c, 5=u, 6=t, 7=e} //取值
String mapStr1 = map.get(4);
//String mapStr1 = map.get(5); //如果不存在,返回null
System.out.println(mapStr1); //c //移除 返回被移除的对象
String maprev = map.remove(3);
System.out.println(maprev); //a System.out.println("=========================");
//遍历
//1、调用keySet,将所有的键存到Set集合中
//2、遍历Set集合
Set<Integer> inSet = map.keySet(); Iterator<Integer> it = inSet.iterator();
while(it.hasNext()) {
Integer key = it.next();
String val = map.get(key);
System.out.println(val);
} System.out.println("=========================");
for(var key : inSet) {
System.out.println(map.get(key));
} System.out.println("=========================");
//entrySet获取的是Entry对象的Set集合, 映射关系对象
//Entry是Map类中内部定义的一个接口 , 调用方式是Map.Entry
//interface Entry<K, V> {
Set<Map.Entry<Integer, String>> mset = map.entrySet();
Iterator<Map.Entry<Integer, String>> itmap = mset.iterator();
while(itmap.hasNext()) {
Map.Entry<Integer, String> mapent = itmap.next();
System.out.println(mapent.getKey() + "====" + mapent.getValue() );
} System.out.println("=========================");
for(Map.Entry<Integer, String> entry : map.entrySet()) {
System.out.println(entry.getKey() + "----" + entry.getValue());
} //=================LinkedHashMap================
//LinkedHashMap:保证迭代的顺序
LinkedHashMap<String, String> link = new LinkedHashMap<String, String>();
link.put("sa", "class1");
link.put("zz", "class2");
link.put("sxxa", "class3");
link.put("sacc", "class4");
System.out.println(link);
}
}

java 集合(五)MapDemo的更多相关文章

  1. Java集合(五)--LinkedList源码解读

    首先看一下LinkedList基本源码,基于jdk1.8 public class LinkedList<E> extends AbstractSequentialList<E> ...

  2. 【由浅入深理解java集合】(四)——集合 Queue

    今天我们来介绍下集合Queue中的几个重要的实现类.关于集合Queue中的内容就比较少了.主要是针对队列这种数据结构的使用来介绍Queue中的实现类. Queue用于模拟队列这种数据结构,队列通常是指 ...

  3. 【由浅入深理解java集合】(三)——集合 List

    第一篇文章中介绍了List集合的一些通用知识.本篇文章将集中介绍List集合相比Collection接口增加的一些重要功能以及List集合的两个重要子类ArrayList及LinkedList. 一. ...

  4. 【由浅入深理解java集合】(二)——集合 Set

    上一篇文章介绍了Set集合的通用知识.Set集合中包含了三个比较重要的实现类:HashSet.TreeSet和EnumSet.本篇文章将重点介绍这三个类. 一.HashSet类 HashSet简介 H ...

  5. 【由浅入深理解java集合】(一)——集合框架 Collction、Map

    本篇文章主要对java集合的框架进行介绍,使大家对java集合的整体框架有个了解.具体介绍了Collection接口,Map接口以及Collection接口的三个子接口Set,List,Queue. ...

  6. Java集合—Map

    简介 Map用户保存具有映射关系的数据,因此Map集合里保存着两组数,一组值用户保存Map里的key,另一组值用户保存Map里的value,key和value都可以是任何引用类型的数据.Map的key ...

  7. Java集合(一):Java集合概述

    注:本文基于JDK 1.7 1 概述 Java提供了一个丰富的集合框架,这个集合框架包括了很多接口.虚拟类和实现类. 这些接口和类提供了丰富的功能.可以满足主要的聚合需求. 下图就是这个框架的总体结构 ...

  8. Java集合(六)--ArrayList、LinkedList和Vector对比

    在前两篇博客,学习了ArrayList和LinkedList的源码,地址在这: Java集合(五)--LinkedList源码解读 Java集合(四)--基于JDK1.8的ArrayList源码解读 ...

  9. 【由浅入深理解java集合】(五)——集合 Map

    前面已经介绍完了Collection接口下的集合实现类,今天我们来介绍Map接口下的两个重要的集合实现类HashMap,TreeMap.关于Map的一些通用介绍,可以参考第一篇文章.由于Map与Lis ...

  10. Java集合框架(Java总结五)

    ”https://www.runoob.com/java/” 集合接口区别 List 接口存储一组不唯一,有序(插入顺序)的对象,允许有相同的元素. Set 接口存储一组唯一,无序的对象,不保存重复的 ...

随机推荐

  1. vue与自定义元素的关系

    你可能已经注意到 Vue.js 组件非常类似于自定义元素--它是 Web 组件规范的一部分.实际上 Vue.js 的组件语法参考了该规范.例如 Vue 组件实现了 Slot API 与 is 特性.但 ...

  2. error C3861: “xxxx”: 找不到标识符

    问题出现背景:c++静态类库中主函数里包含子函数 解决办法:先声明子函数再写主函数.

  3. c++ 动态判断基类指针指向的子类类型(typeid)

    我们在程序中定义了一个基类,该基类有n个子类,为了方便,我们经常定义一个基类的指针数组,数组中的每一项指向都指向一个子类,那么在程序中我们如何判断这些基类指针是指向哪个子类呢? 本文提供了两种方法 ( ...

  4. Solr中的q与fq参数的区别

    转自:搜索系统5:Solr中的q与fq参数的区别在那儿 1.对结果排序有影响 今天遇到一个问题,把相同的参数比如name:张三,放到q与fq,两者返回的结果完全不一样. 经过debug发现,原因是这两 ...

  5. file_name[:-4]

    file_name: chair_0001.off file_name[:-4] : chair_0001

  6. 利用反射将Model转化为sql

    public string GetInsertSqlByModel(Object o) { StringBuilder sbStart = new StringBuilder(); StringBui ...

  7. webpack + vue 项目 自定义 插件 解决 前端 JS 版本 更新 问题

    Webpack 是一个前端资源加载/打包工具.它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源. 它的异步加载原理是,事先将编译好后的静态文件,通过js对象映射,硬编 ...

  8. windows下特殊字符无法用来命名

    原则上可以利用键盘输入的英文字母.符号.空格.中文等均可以作为合法字符,但由于以下字符由系统保留它用,因此不能用在文件命名中: :   /  \  ?  *  “  <  >  |  注: ...

  9. 【死磕jeesite源码】Jeesite配置定时任务

    一.主要是注意XML文件中设置3个地方和类文件中配置 第一步配置: 第二步配置:注解扫描 第三步配置:开启任务 类中注解配置:如下 @Service 或者Component @Lazy(false) ...

  10. 安卓手机优化 ROOT自启动管理 + 电量管理

    一.KingRoot + 净化大师 KingRoot 主要完成ROOT 和 自启动软件的管理 这里禁止的自启动管理 对于有些软件是不太管用 比如美团 手机百度等 净化大师 主要完成 高电量的软件优化 ...