栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Map和Set

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Map和Set

目录

一、Map接口

1、Map接口的解释

2、Map集合的常用方法

 3、关于Map接口中常见的子类添加问题

二、Set接口

1、Set集合的解释

2、Set集合常用的方法

三、练习题 

1、只出现一次的数字

2、复制带随机指针的链表

 3、规律单词

4、宝石与石头 

 5、旧键盘打字

 四、相关代码


一、Map接口

1、Map接口的解释

Map 是 Java 中特别常见的一种数据类型,以键值对存储数据

  HashMap是基于哈希表实现的

、TreeMap是基于RBTree(红黑树-二分搜索树)实现的

2、Map集合的常用方法

(1)根据相应的key值取出相应的value值

(2)Map集合的遍历:实际上就是取出这一对一对的元素

         Map中键值对这个类型——>Map.Entry(代表一个个键值对)

这个方法的返回值是一组键值对象

(3)添加一个新的键值对

如果key不存在,就新增一个Map.Entry对象保存到Map集合中

如果key存在,就修改原来的value为新的value,返回修改前的value

(4)删除 key对应的的这一个键值对,返回对应的value值

 (5)返回当前Map集合中所有key值集合,因为key是不重复的,所以返回了一个Set类型的集合 

(6)返回当前Map集合中所有value集合

 (7)判断当前的key值在Map集合中是否存在,存在返回true,否则返回false

 (8)判断value在Map集合中是否存在

 (9)

 3、关于Map接口中常见的子类添加问题

(1)Map接口中元素的添加顺序和元素的保存顺序是没有必要的联系的

         在HashMap中按保存的元素顺序是由hash函数决定的

 在TreeMap中的compareTo方法决定的,要能使用TreeMap保存元素,该类就必须实现Comparable或者使用比较器

 (2)关于保存null值的说明

           在HashMap中可以保存null值,其中key和value都可以为空,并且key为null有且只有一个

 在TreeMap中key值不能为null,value值可以为null

二、Set接口

1、Set集合的解释

       Set其实就是披着外衣的Map,也是Collection接口的子接口,和List集合最大的区别在于,Set集合保存的元素不能重复,因此Set结合一般用来进行去重处理。

       Collection接口特性,一次只能保存一个元素,而Map接口可以一次保存一対元素,叫做键值对对象。

2、Set集合常用的方法

(1)添加元素,添加成功则返回true,若已经存在该元素,则添加失败,返会false

(2)判断一个元素是否在Set集合中存在

(3)在Set集合中删除指定元素,若果元素不存在,删除失败,返回false,否则删除该元素,返回true

(4)可以发现在Set集合中不提供修改元素的方法,如果要修改元素,就只能把要修改的元素先删除,然后添加新元素 

(5)相关代码

三、练习题 

1、只出现一次的数字

package priority_queue.leetcode;

import java.util.HashMap;
import java.util.Map;


public class Num136 {
    public int singleNumber(int[] nums) {
       //先遍历原数组,将出现的元素以及频次保存到Map集合中
        Map map=new HashMap<>();
        for (int i:nums) {
            map.put(i,map.getOrDefault(i,0)+1);
        }
        //遍历Map集合找到频次为1的元素
        int ret=0;
        for (Map.Entry entry: map.entrySet()){
            if (entry.getValue().equals(1)){
                ret=entry.getKey();
            }
        }
        return ret;
    }
}

2、复制带随机指针的链表

 (1)遍历原链表,在Map集合中维护和新链表的映射关系

 (2)再次遍历原链表,通过映射关系维护新链表的next和random

package priority_queue.leetcode;

import java.util.HashMap;
import java.util.Map;


public class Num138 {
    public Node copyRandomList(Node head) {
      //遍历原链表,使用Map集合维护原链表节点和新链表节点的映射关系
        Map map=new HashMap<>();
        for (Node x=head;x!=null;x=x.next){
            Node node=new Node(x.val);
            map.put(x,node);
        }
        //再次遍历原链表,通过映射关系维护新链表的next和random
        for (Node x=head;x!=null;x=x.next){
            //原1.next=原3
            //新1.next=新3
            map.get(x).next=map.get(x.next);
            //原1.random=原5
            //新1.random=新5
            map.get(x).random=map.get(x.random);
        }
        return map.get(head);
    }
}

class Node {
    int val;
    Node next;
    Node random;

    public Node(int val) {
        this.val = val;
        this.next = null;
        this.random = null;
    }
}

 3、规律单词

 将pattern中的字母以及str中的字符都转变为数字,然后进行比较

4、宝石与石头 

 使用Set集合存储宝石中的字符,然后去遍历石头中的字符,看是否处在即可

package Map_and_Set.Leetcode;

import java.util.HashSet;
import java.util.Set;


public class Num771 {
    public int numJewelsInStones(String jewels, String stones) {
          //使用set集合保存jewels中的字符
        Set set=new HashSet<>();
        for (int i = 0; i  

 5、旧键盘打字

package Map_and_Set.Leetcode;

import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;


public class jiujianpan {

    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        String expectedStr=null;
        String actualStr=null;
        while (scanner.hasNextLine()){
            expectedStr=scanner.nextLine();
            actualStr=scanner.nextLine();
        }
        //注意输出的字母都是大写,所以直接先转为大写
        expectedStr=expectedStr.toUpperCase();
        actualStr=actualStr.toUpperCase();
        //遍历实际输入的字符串存到set集合中
        Set set=new HashSet<>();
        for (int i = 0; i  set1=new HashSet<>();
        for (int i = 0; i  

6、前k个高频词 

 四、相关代码

https://gitee.com/ren-xiaoxiong/rocket_class_ds/tree/master/src/Map_and_Sethttps://gitee.com/ren-xiaoxiong/rocket_class_ds/tree/master/src/Map_and_Set

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/922375.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号