当前位置: 首页 > news >正文

南通专业网站设计制作网页制作公司需要什么资质

南通专业网站设计制作,网页制作公司需要什么资质,wordpress发表简短文字,微信网页版如何识别二维码【java数据结构】map和set 一、Map和Set的概念以及背景1.1 概念1.2 背景1.3 模型 二、Map2.1 Map说明2.2 Map的常用方法 三、Set3.1 Set说明3.2 Set的常用方法 四、Set和Map的关系 博客最后附有整篇博客的全部代码!!! 一、Map和Set的概念以及…

【java数据结构】map和set

  • 一、Map和Set的概念以及背景
      • 1.1 概念
      • 1.2 背景
      • 1.3 模型
  • 二、Map
      • 2.1 Map说明
      • 2.2 Map的常用方法
  • 三、Set
      • 3.1 Set说明
      • 3.2 Set的常用方法
  • 四、Set和Map的关系

博客最后附有整篇博客的全部代码!!!

一、Map和Set的概念以及背景

1.1 概念

Map和set是一种专门用来进行搜索的容器或者数据结构,其搜索的效率与其具体的实例化子类有关。

1.2 背景

背景:

到现在为止,当我们要找一个元素的时候,我们可以采取直接遍历的方式,时间复杂度为O(N),或者采用二分查找法,时间复杂度为O(logn),但这两个搜索方式是要求这组序列是有序的!并且这两种方式比较适合静态类型的查找,即一般不会对区间进行插入和删除操作了。
但现实生活中,我们会遇到这类情况:

  1. 根据学生学号找到相应的学生姓名
  2. 通讯录中,根据姓名找到电话
  3. 抖音带货,根据链接号找到相应的商品

这些情况我们在日常生活中经常遇到,并且会实时更新里面的内容,例如删除,修改,即动态查找,此时,二分查找,以及直接遍历,都不适合了。而 Map 和 Set 是一种适合动态查找的集合容器

在这里插入图片描述

1.3 模型

一般把搜索的数据称为关键字(Key),和关键字对应的称为值(Value),将其称之为Key-value的键值对,所以
模型会有两种:

  1. 纯 key 模型,比如:
    有一个英文词典,快速查找一个单词是否在词典中
    快速查找某个名字在不在通讯录中
  2. Key-Value 模型,比如:
    统计文件中每个单词出现的次数,统计结果是每个单词都有与其对应的次数:<单词,单词出现的次数>
    梁山好汉的江湖绰号:每个好汉都有自己的江湖绰号
    而Map中存储的就是key-value的键值对,Set中只存储了Key。

二、Map

2.1 Map说明

Map的官方文档

Map是一个接口类,但是并没有继承Iterable和Collection接口,它的存储方式是Key-Value 模型<K,V>,并且K是唯一值,不能重复

2.2 Map的常用方法

介绍Map接口之前,先给大家讲一下Map.Entry<K, V> ,它是Map的内部类

  • Map.Entry<K, V> 是Map内部实现的用来存放<key, value>键值对映射关系的内部类。
  • 注意:Map.Entry<K,V>并没有提供设置Key的方法

Map.Entry<K, V>提供的方法:
这里主要带你了解 Map.Entry<K, V>提供的前三种方法。
在这里插入图片描述

        /** getKey() 方法* getValue() 方法*/Map<String, Integer> map=new TreeMap<>();map.put("李四",5);map.put("张三",6);map.put("赵六",20);//map.entrySet()将Map集合变为Set集合for (Map.Entry<String, Integer> entry : map.entrySet()) {System.out.println(entry.getKey() + " : " + entry.getValue());}
       /** setValue(V value) 方法*/Map<String, String> map=new TreeMap<>();map.put("key1", "value1");map.put("key2", "value2");String oldValue = map.put("key1", "newValue1");System.out.println("Old Value: " + oldValue); // 输出旧值 value1for (Map.Entry<String, String> entry : map.entrySet()) {System.out.println("Key: " + entry.getKey() +" Value: " + entry.getValue());}}

Map的常用方法:在这里插入图片描述

        Map<String,Integer> map = new TreeMap<>();map.put("A", 1);map.put("B", 2);map.put("C", 3);// get()方法System.out.println(map.get("A"));// getOrDefault()方法System.out.println(map.getOrDefault("D",-1));// remove()方法map.put("D",4);System.out.println(map);map.remove("D");System.out.println(map);// containsKey()方法System.out.println(map.containsKey("A"));//trueSystem.out.println(map.containsKey("D"));///false// containsValue()方法System.out.println(map.containsValue(1));//trueSystem.out.println(map.containsValue(5));//false// keySet()方法获取所有的键Set<String> keys = map.keySet();System.out.println("Keys: " + keys);// values()方法获取所有的值Collection<Integer> values = map.values();System.out.println("Values: " + values);

注意:

  1. Map是一个接口,不能直接实例化对象,如果要实例化对象只能实例化其实现类TreeMap或者HashMap
  2. Map中存放键值对的Key是唯一的,value是可以重复的
  3. Map中的Key可以全部分离出来,存储到Set中来进行访问(因为Key不能重复)。
  4. Map中的value可以全部分离出来,存储在Collection的任何一个子集合中(value可能有重复)。
  5. Map中键值对的Key不能直接修改,value可以修改,如果要修改key,只能先将该key删除掉,然后再来进行重新插入。
  6. 在Map中插入键值对时,key不能为空,否则就会抛NullPointerException异常,但是value可以为空
  1. TreeMap和HashMap的区别
    在这里插入图片描述

三、Set

3.1 Set说明

Set的官方文档

Set是一个接口,它继承了Iterable和Collection接口,它的存储方式是Key 模型,并且K是唯一值,不能重复。

3.2 Set的常用方法

在这里插入图片描述

        Set<String> set = new TreeSet<String>();set.add("A");set.add("B");set.add("C");// contains()方法
//        System.out.println(set.contains("A"));//ture
//        System.out.println(set.contains("D"));//false// remove()方法
//        set.add("E");
//        System.out.println(set);
//        set.remove("E");
//        System.out.println(set);// size()方法
//        System.out.println(set.size());// isEmpty()方法
//        System.out.println(set.isEmpty());// clear()方法
//        System.out.println(set.size());
//        set.clear();
//        System.out.println(set.size());Object[] array = set.toArray();System.out.println("Array from set: " + Arrays.toString(array));// 创建另一个集合Collection<String> collection = Arrays.asList("Banana", "Cherry", "Date");// 使用containsAll()方法检查set是否包含集合中的所有元素boolean containsAll = set.containsAll(collection);System.out.println("是否包含Set集合中所有的元素 " + containsAll);// 使用addAll()方法将集合中的元素添加到set中(可以达到去重的效果)boolean added = set.addAll(collection);System.out.println("将所有元素是否成功添加到set集合中 " + added);System.out.println("添加成功后的集合 " + set);}

注意:

  1. Set是继承自Collection和Iterator的一个接口类,所以它可以通过迭代器打印集合元素
  2. Set中只存储了key,并且要求key一定要唯一
  3. Set的底层是使用Map来实现的,其使用key与Object的一个默认对象作为键值对插入到Map中的
  4. Set最大的功能就是对集合中的元素进行去重
  5. 实现Set接口的常用类有TreeSet和HashSet,还有一个LinkedHashSet,LinkedHashSet是在HashSet的基础上维护了一个双向链表来记录元素的插入次序
  6. Set中的Key不能修改,如果要修改,先将原来的删除掉,然后再重新插入
  7. Set中不能插入null的key。
  1. TreeSet和HashSet的区别:
    在这里插入图片描述

四、Set和Map的关系

  1. HashSet:
  • 底层数据结构是HashMap。
  • 利用HashMap的键来存储元素,由于HashMap的键不允许重复,因此保证了HashSet中元素的唯一性。
  • 不保证元素的顺序。
  1. LinkedHashSet:
  • 底层数据结构是LinkedHashMap。
  • 同样利用LinkedHashMap的键来存储元素,保证了元素的唯一性。
  • 与HashSet相比,LinkedHashSet保持了元素的插入顺序。
  1. TreeSet:
  • 底层数据结构是TreeMap(在Java7及之前)或红黑树(在Java 8及之后)。 利用TreeMap的键来存储元素,通过树形结构保证了元素的有序性。
  • 元素按照自然顺序或构造时指定的比较器(Comparator)排序。
    上述这三种都是通过Map来实现Set的,但并不是所有Set集合都是通过Map来实现的。

在这里插入图片描述
TreeSet底层是通过TreeMap实现的,那add的时候为什么没有value值?
在这里插入图片描述
此篇博客的全部代码!!!

http://www.yayakq.cn/news/252021/

相关文章:

  • 坑梓网站建设代理商全国企业信用信息公示系统黑龙江
  • 网站设计网站建设专业黄海军事最新消息
  • html用什么编译器编写广州网站优化步骤
  • 深圳富通做网站一个网站做两个优化可以做吗
  • 黄岩路桥网站设计免费网站建设免代码
  • 做网站挣钱经历网站建设的培训心得
  • 临沂做网站wyjzgzswordpress 4.4.3
  • 建文帝网站建设百度搜索引擎营销案例
  • 盐城哪家做网站的正规提供邯郸手机网站建设
  • 咸阳免费做网站公司ui做自适应网站
  • 八字排盘网站建设企业推广服务
  • 那个网站专门做二手衣服做微网站需要哪种公众号
  • 网站建设中有关层的使用的步骤百度官网首页登录入口
  • 从什么网站可以做兼职中企动力科技股份有限公司深圳分公司
  • 电子商务网站项目计划贵阳企业自助建站
  • 做视频网站赚钱嘛网页设计作业笔记
  • 江西企业 网站建设公司都是自己制作网站
  • 网站制作素材图片西安网站建设 分类信息
  • 二度云自助建站系统找人一起做素材网站
  • 网站域名空间一年费用是多少钱优秀网络广告案例分析
  • 商城网站功能长图可以在哪些网站做
  • 360建站官网wordpress上传word
  • 家用宽带怎样做网站服务器网站推广seo
  • 做网站哪家公司最好雄安专业网站建设
  • 网站不允许上传文件炒域名 网站
  • 建设网站要什么时候开始网站建设专业团队
  • 高端商城网站建设编程训练网站
  • wordpress不能下载南安seo快速排名
  • 云购系统商城网站建设新发地网站建设
  • 济南网站建设是什么意思免费收录网站