Map接口不是继承Collection接口,它与Collection接口是并列存在的,用于储存键-值对(key-value)形式的元素,描述了有不重复的键到值的映射。

Map中的key(键)和value(值)可以是任何引用类型的数据,Map中的key用Set存放,不允许重复,即同一个Map对象所对应的类,必须重写hashCode()方法,和equals()方法。通常同String类作为Map的key,key和value之间存在单向一对一关系,即通过指定的key总能找到唯一的、确定的value.

HashMap类是Map接口中使用频率最高的实现类,允许使用null键和null值,与HashSet集合一样,不保证映射的顺序。

LinkedHashMap类是HashMap的子类,LinkedHashMap类可以维护Map的迭代顺序,迭代顺序与键-值对的插入顺序一致。

TreeMap类是Map接口中的。TreeMap集合可以保证所有的键-值对处于有序状态(基于二叉树的红黑树)。

Map中有一个比较古老的,线程安全的实现类--Hashtable,与HashMap集合不同的是它不允许使用null作为键-值,Hashtable类存取速度较慢,目前已经被HashMap所替代,但它有一个子类Properties在实际开发中很常见,该子类对象用于处理属性文件。由于属性文件里的键和值都是字符串类型,所以Properties类里的键和值都是字符串类型。serProperty()类似于Map的put()方法。

上代码:

1.Map,从命令行读入一个字符串,表示一个年份,输出该年的
* 世界杯冠军是哪支球队。如果该年没有举办世界杯,
* 则输出:没有举办世界杯

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;/*** Map,从命令行读入一个字符串,表示一个年份,输出该年的* 世界杯冠军是哪支球队。如果该年没有举办世界杯,* 则输出:没有举办世界杯*/
public class eightA {public static void main(String[] args) {Map<Integer,String> map = new HashMap<>();//pnt()将指定的值与此映射中的指定键关联map.put(2006,"意大利");map.put(2002,"巴西");map.put(1998,"法国");map.put(1994,"巴西");map.put(1990,"德国");map.put(1986,"阿根廷");map.put(1982,"德国");map.put(1978,"巴西");//输入key查value;System.out.println("请输入要查询的年份:");Scanner scanner = new Scanner(System.in);int year = scanner.nextInt();//containsKey()如果此映射包含指定键的映射关系,则返回trueif (map.containsKey(year)){System.out.println("今年的世界杯冠军是:"+map.get(year));}else{System.out.println("今年没有举行世界杯");}//输入value查keySystem.out.println("请输入要查询的国家:");Scanner scan = new Scanner(System.in);String country = scan.next();//containsValue()如果此映射将一个或多个键映射到指定值,则返回trueif(map.containsValue(country)) {//Set keyset()返回此映射中包含的键的Set视图Set<Integer> set = map.keySet();//set遍历for (Integer s:set){if (map.get(s).equals(country)){System.out.println(s);}else {System.out.println("没有夺冠");}}}}
}

2.遍历map的多种方法

import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;public class eightB {public static void main(String[] args) {Map<String,String> map = new LinkedHashMap<>();map.put("Tom","Corejava");map.put("John","Oracle");map.put("Susan","Oracle");map.put("Jerry","JDBC");map.put("Jim","Unix");map.put("Kevin","JSP");map.put("Lucy","JSP");map.put("Allen","JDBC");
//        System.out.println(map);map.put("Lucy","Corejava");//键相同,值覆盖
//        System.out.println(map);Set<String> keyset = map.keySet();for (String k:keyset){
//            System.out.println(k +"--"+ map.get(k));//map遍历,遍历键if (map.get(k).equals("JSP")){System.out.println(k);}}//一种简单的遍历方法map.forEach((key,value)->System.out.println(key+"->"+value));//另两种遍历方法//遍历键值Set<Map.Entry<String,String>> entrySet = map.entrySet();for(Map.Entry e: entrySet) {System.out.println(e.getKey()+"->"+e.getValue());}//遍历值Collection<String> values = map.values();for(String value: values) {System.out.println(value);}}
}

3.给定字符串,请输处该字符串由哪些字符组成,每个字符出现几次。(Map)
* 利用HashMap的键相同,值覆盖。当String相等,Integer+1;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;/*** 给定字符串,请输处该字符串由哪些字符组成,每个字符出现几次。(Map)* 利用HashMap的键相同,值覆盖。当String相等,Integer+1;*/
public class eightC
{public static void main(String[] args){Map<String,Integer> map = new HashMap<String,Integer>();String[] str = {"a", "hello", "a", "hello", "b", "c","b"};for(int i = 0; i < str.length; i ++){if(map.get(str[i]) == null){map.put(str[i], 1);}else{map.put(str[i], map.get(str[i])+1);}}//遍历mapSet<String> keys = map.keySet();for(String k:keys){System.out.println(k + "=" + map.get(k));}}
}

JAVA程序设计----集合基础之Map相关推荐

  1. JAVA程序设计----集合基础之Collection

    思考题: 1.Set和List有哪些区别? List是有序的可重复的Collection,使用此接口能够精确的控制每个元素插入的位置.能够使用索引高效地访问List中的元素,这类似于Java的数组.S ...

  2. Java常用集合List、Map、Set介绍以及一些面试问题

    文章目录 集合框架图 常用接口介绍以及区别 常用接口类介绍 ArrayList LinkedList HashMap ConcurrentHashMap TreeMap LinkedHashMap H ...

  3. Java程序设计--集合(下)(十三)

    集合 1.Set系列集合 1.1 Set系列集合概述 1.2 HashSet元素无序的底层原理 1.3 HashSet元素去重复的底层原理 1.4 实现类:LinkedHashSet 1.5 实现类: ...

  4. Java程序设计语言基础01:绪论

    目录 1. 初探HelloWorld程序 1.1 类(Class)语法元素 1.2 main方法(main method)语法元素 1.3 System.out.println 1.4 字符串 2. ...

  5. java collections_Java集合基础的详细介绍(二)

    七.Collections工具类 Collections 是一个操作 Collection 和 Map 等集合的工具类.Collections 中提供了一系列静态的方法对集合元素进行排序.查询和替换等 ...

  6. Java 探究集合List、Map、Set底层的数据结构【钢镚核恒】

    Java 集合 简介 集合 (collection)是存储对象的容器.例如:6个人一个团队(集合) 集合与数组类通,数组是存储具体数据的容器.集合的底层有用到数组 这篇文章是加深对集合的理解,探究各种 ...

  7. Java程序设计——集合框架

    目录 一.概述 Collection:单列集合类的根接口,用于存储一系列符合某种规则的元素,它有两个重要的子接口,分别是List和Set.其中,List的特点是元素有序.元素可重复.Set的特点是元素 ...

  8. Java Review - 集合框架=Collection+Map

    文章目录 概述 容器 = Collection + Map Collection Set TreeSet HashSet LinkedHashSet List ArrayList Vector Lin ...

  9. java程序设计_JAVA基础程序设计之方法

    1 基本概念 Java 方法是语句的集合,它们在一起执行一个功能. l 方法是解决一类问题的步骤的有序组合 l 方法包含于类或对象中 l 方法在程序中被创建,在其他地方被引用 1.1 方法的定义 一般 ...

最新文章

  1. Samba如何配置共享资源
  2. 最大概率法分词及性能测试
  3. Vim的一些使用技巧
  4. Java 文件字符输入流FileReader读取txt文件乱码问题
  5. PL/SQL Developer 13.0设置中文
  6. 数据库技术丨GaussDB(DWS)数据同步状态查看方法
  7. 【Objective-C】java中的interface与Objective-C中的interface的区别
  8. win7下装ubuntu双系统
  9. Git学习笔记(2)-创建仓库
  10. RPG游戏开发基础教程
  11. SCAU高级语言程序设计--实验6 循环结构(二)(3)
  12. Circumventing Group Policy Settings
  13. 计算机windows7升级,告诉你win7如何升级为旗舰版
  14. winpe 安装 win7 过程问题综述
  15. win7 命令行开启WiFi
  16. 高通Android display分析【转】
  17. 【JAVA学习路径 表述(超级详细的Java知识宇宙)】
  18. 小米电视屏蔽开机广告的方法
  19. Parabola 抛物线-简单公式实现
  20. 太牛了,国人纯手工自制CPU,耗时半年,用了3000多个晶体管

热门文章

  1. 牛客多校3 - Operating on a Graph(并查集+链表合并)
  2. 牛客多校2 - Cover the Tree(dfs序)
  3. HDU - 5335 Walk Out(bfs+路径输出+贪心)
  4. php switch case 判断语句,PHP的switch判断语句的“高级”用法详解,switch详解_PHP教程...
  5. mysql innodb索引覆盖_Mysql InnoDB 覆盖索引与回表
  6. C++指向成员函数的指针
  7. c++ template笔记(3)非类型模板参数nontype template parameters
  8. RedrawWindow, UpdateWindow,InvalidateRect 用法
  9. 计算机网络 | 传输层 :UDP与TCP协议详解
  10. ​Hmily重启后月度报告