集合和映射

本文介绍了集合(Set)和映射(Map)的概念,作为数据结构的容器,用于存储数据。集合强调去重,如HashSet和TreeSet,其性能与实现方式(链表、哈希表、树)有关。映射(Map)则是K-V结构,如HashMap和TreeMap,提供根据Key查找Value的功能。文章通过LeetCode的349和350题,阐述了集合和映射在实际问题中的应用和解决思路。
摘要由CSDN通过智能技术生成
  • 前言

这几天看代码碰到了HashMap,HashSet,TreeMap,TreeSet等等这样的结构,虽然早有耳闻,但一直不是很清楚怎么用的,是个什么意思。这篇文章就想写写这 集合(Set) 和 映射(Map) 是个什么东西。

其实集合 和 映射 都算是一种容器,一种数据结构,可以来存放数据的容器。

  • 集合(Set)

    特点是 可以去重(一般来说是这样, 但还有他的对立面: 多重集合,就是允许放入重复的元素,但多重集合很少用,目前还没有碰到过,了解这么一个概念就好。),即不允许放入重复的(相等的)元素。

    • 相关应用场景:
    1. 店里客户统计(相同客户只统计一次),
    2. 文本词汇量统计(这里的自然语言处理,比如英文里什么相同单词的时态,人称数的变化等等,怎么判定他们相等,感兴趣的可以去看看)
    3. 网站IP统计, 等等。
    • 底层实现: (在java里)
    1. 可以基于链表, 哈希表实现: (HashSet, LinkedHashSet)
      这样实现的集合没有顺序可言。 即是 一种 无序集合。
    2. 可以基于搜索树实现: (或者说基于 树 结构来实现) (TreeSet)
      这样实现的集合可以有顺序,即是一种 有序集合。

    一般来说,性能优越是: 哈希表实现 > 树实现 > 链表实现 。

    再来看看LeetCode上的804号问题来帮助理解:

    • 题目 : 唯一的摩尔斯密码
    • 在这里插入图片描述
      插图片
    • 思路:
      从单词列表中依次拿出每个单词,对应成相应的摩斯密码后,将这个密码加入到 一个集合中(不可以放入重复的值), 放回这个集合中的元素个数即可。
    • 上代码
import java.util.TreeSet;
class Solution {
   
    public int uniqueMorseRepresentations(String[] words) {
   
        TreeSet<String> set = new TreeSet<String>();
		String[] codes = {
   ".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...",
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值