集合覆盖问题

redis知识梳理

孤者浪人 提交于 2020-03-05 22:12:01
redis: redis的数据类型 redis支持的几种数据类型: String(字符串) Hash(哈希) List(有序可重复元素集合) Set(无序不重复元素集合) ZSet(有序不重复元素集合) String: 键和值都是字符串,存储简单字符串数据类型,一个键最大能存储512M 。 命令 功能 set key value 设置值(多次设置相同的key的value值会覆盖) get key 获取值 setnx key value 不存在则设置值 del key 删除键值 setex key 有效期时间 value 键值有效期之后自动失效 mset key1 value1 key2 value2 …keyn valuen 一次设置多个值 getset key value 一次获取多个值 incr / decr key 对一个值进行自增或自减 incrby / decrby key 步长 对一个值进行步长自增或自减 append key val 给key的value追加val的字符串 strlen key 返回key对应的字符串的长度 mget key1 key2 …keyn 一次获取多个值 Hash: Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。 可以理解为:filed=对象,key=对象的属性,value

map集合和set集合

别来无恙 提交于 2020-03-05 12:14:52
set集合 set用于存放不重复的数据 1、创建new Set(); 创建一个没有任何内容的set集合 new Set(iterable); 创建一个具有初始内容的set集合,内容来自于可迭代对象每一次迭代的结果 如果写重复了,会自动去重。可用于去重操作 eg: 数组去重: const arr = [3, 532, 2, 3, 1, 1, 6, 5, 6, 5] // const s = new Set(arr); 获得set集合对象 // const result = […s];把set集合转换为数组 const result = […new Set(arr)]; console.log(result); 字符串去重 const str = “fagalganbvailhvabivav”; const s = […new Set(str)].join(""); console.log(s) 2、对set集合进行后续操作 ①add(数据):添加一个数据到set集合末尾,如果数据已存在,则不进行任何操作 ②set 使用Object.is的方式判断两个数据是否相同,但是针对+0和-0,set认为是相对的【颠倒】 ③has(数据):判断set中是否存在对应的数据【Object.has】 ④delete(数据):删除匹配的数据,返回是否删除成功 ⑤clear():清空数据集合 ⑥size

算分-NP COMPLETENESS

雨燕双飞 提交于 2020-02-12 14:46:03
Easy and Hard Problems:   NP完全理论是为了在可处理的问题和不可处理的问题之间画一条线,目前最重要的问题是是否这两者是本质不同的,而这个问题目前还没有被解决。典型的结果是一些陈述,比如“如果问题B有一个多项式时间的算法,那么C也会有一个多项式时间的算法”,或者逆否表述为“如果C没有多项式时间的算法,那么B也没有”。第二个表述是说,对于一些问题C以及一个新的问题B,我们先去找是否有这种关系,如果有的话我们可能不想去做问题B,先来看看C。为了描述这些东西,需要不少形式主义的记号,我们在这里尽可能地少涉及。   先来看什么是问题?一个抽象的做决定问题是从问题实例集合I到{0,1}的映射,其中0代表错误,1代表正确。为了更严谨,我们把问题实例写成I到{0,1}*,也就是0/1组成的字符串,一个具体的做决定问题是从比特串到{0,1}的映射,我们把那些没有意义的问题映射到0。举个例子来说,对于最短路径问题,一个问题事实例是一个图以及两个顶点,做决定的问题是是否存在这两个顶点之间长度至多为k的一条路径。要注意的是,做决定问题不会比相应的最优算法要复杂,也就是说其复杂度小于等于最优算法,因此为了去证明相应的最优化算法是hard的,如果我们可以证明做决定问题是hard的,那么就可以达成我们的目标。(相当于充分性)   接着来看什么是多项式时间

java基础---集合篇

那年仲夏 提交于 2020-01-18 05:05:39
List集合 该添加方法是在集合的指定位置添加元素,指定位置原有元素的位置向后挪了一位(即下标加1): List.add(集合下标,添加元素);(集合实现类: ArrayList () ) 该添加方法是将另外一个集合(参数)的元素添加到集合的结尾处: List.addAll(Collection c ); List集合的底层实现: List集合的子类包括:ArrayList 底层使用的是:数组 注意:实现数组长度可变,指的是重新创建一个新的数组,长度大于旧数组 LinkedList 底层使用:链表结构 特点:每一个元素,前半部分是具体的值,后半部分是地址值 List集合的特点: 元素可重复,不唯一,有序(添加顺序/索引顺序/先后顺序) 集合只能存储对象或引用数据类型,基本数据类型不允许存放在集合当中。 当集合添加基本数据类型的时候,会自动装箱(将基本数据类型转换成引用数据类型)。 引用数据类型可以使用“==”和equals()方法比较,使用equals()方法比较集合元素是否重复。 List集合输出的三种方式: 标准for循环,增强for循环 以及迭代器(重点):(集合中的标准输出方法) System. out .println( "============== 迭代器输出 ===================" ); // 获取迭代器 ----List 集合当中存在一个方法 -

[转]Java中常用的集合—初学者的你不可错过的精编整理

旧街凉风 提交于 2020-01-05 02:29:32
集合一直都是项目中非常常见的,我是一个Android开发者,集合对于我来说,在项目中使用的次数非常之多,因为使用的多,熟能生巧,所以这里呢!就给那些初学者整理一下Java当中常用的集合吧!   因为此篇文章是给初学者看到,所以对于集合的认识,我们就不从内存的角度去分析了,等你Java学到一定的时候,再去学习一下集合的底层实现,这会让成为一名更加牛的Java程序员。   在整理之前呢,我们先聊一聊为什么集合会这么常用?,集合这个概念,我们初次接触是在高中的数学当中,高中的集合具有以下知识点:   1、集合的含义:某些指定的对象集在一起就成为一个集合,其中每一个对象叫元素。   2、集合的中元素的三个特性:   ①.元素的确定性;②.元素的互异性;③.元素的无序性   说明: (1)对于一个给定的集合,集合中的元素是确定的,任何一个对象或者是或者不是这个给定的集合的元素。   (2)任何一个给定的集合中,任何两个元素都是不同的对象,相同的对象归入一个集合时,仅算一个元素。   (3)集合中的元素是平等的,没有先后顺序,因此判定两个集合是否一样,仅需比较它们的元素是否一样,不需考查排列顺序是否一样。   高中的集合理解起来很简单,高中的集合里面放到是一个一个具体的对象,集合当中对象与对象之间是不一样的,而且集合中对象的元素是杂乱无章的,顺序没有什么规律可循,因为高中集合是无序性的

能快速理解Java_集合类_的文章

落花浮王杯 提交于 2020-01-03 15:14:05
这篇文章是我学习完Java集合类做的笔记和总结,也是用来记录自己从大一开始的IT生涯,如果你想认真细读这篇文章,请做好受虐的准备(建议电脑看),因为这篇文章有点长,ヽ(ー_ー)ノ。 如果在看我这篇文章过程中,发现了错误,望指点。 一、什么是集合? 举个例子:当你有很多书时,你会考虑买一个书柜,将你的书分门别类摆放进入。使用了书柜不仅仅使房间变得整洁,也便于以后使用书时方便查找。在计算机中管理对象亦是如此,当获得多个对象后,也需要一个容器将它们管理起来,这个容器就是集合。 集合本质是基于某种数据结构数据容器。常见的数据结构:数组(Array)、集(Set)、队列(Queue)、链表(Linkedlist)、树(Tree)、堆(Heap)、栈(Stack)和映射(Map)等结构。 下面便 一 . 一 介绍: 其中在两大接口中会有框架图,以方便大家学前、学后在大脑里可以形成一个思维导图,也方便大家检查自己对各各知识点的熟悉程度。 注意: 由于在集合中是有一个参数化类型的,所以在下面的代码里我会 指定成Object 。为什么我要指定为Object呢?因为Java中的Object类是所有类的超类。 先涉及一下泛型的定义:集合类 对象 = new 集合类 (); 也可以先前往 四、泛型,了解U•ェ•*U 二、Collection接口 1、集合类中Collection接口的介绍

Java基础之集合框架

元气小坏坏 提交于 2019-12-26 09:49:15
java集合架构支持3种类型的集合:规则集(Set),线性表(List),和图(Map),分别定义在Set,List,Map中。 Set实例存储一组互不相同的元素(集合),List实例存储一组顺序排列的元素(表),Map存储一组 对象---关键值的映射 集合中存储的是Java对象的引用,是一个引用的集合,这个引用指向相应的对象空间 ,而不是集合本身存储的对象 集合中不可以存储基本数据类型值,基本数据类型也可以装入集合,但其内部是先自动装箱成包装类对象,再存入集合 总的架构如下,非常重要,包含继承关系,实现的分类,一目了然:集合分为Map 接口和Collection接口 ,这两个接口是Java集合框架的根接口 Collection接口:         Set接口:不可重复 没有索引             HashSet具体类 : 使用哈希算法去重复, 效率高, 但元素无序             LinkedHashSet具体类 : HashSet的子类, 原理相同, 除了去重复之外还能保留存储顺序             TreeSet具体类 :使用二叉树算法排序, 可以指定一个顺序, 对象存入之后会按照指定的顺序排列        List接口: 可重复, 有存储顺序(有索引),存和取有序             ArrayList具体类 :数组实现, 增删慢, 查找快

史上最全Java集合面试题

╄→尐↘猪︶ㄣ 提交于 2019-12-20 22:37:30
1、你所知道的集合类都有哪些?主要方法? 最常用的集合类是 List 和 Map。 List 的具体实现包括 ArrayList 和 Vector,它们是可变 大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。 List 适用于按数值索 引访问元素的情形。 Map 提供了一个更通用的元素存储方法。 Map 集合类用于存储元素对(称作"键"和"值"), 其中每个键映射到一个值。 ArrayList/Vector List Collection HashSet/TreeSet Set HashTable Treemap/HashMap 我记的不是方法名,而是思想,我知道它们都有增删改查的方法,但这些方法的具体名称, 我记得不是很清楚,对于 set,大概的方法是 add,remove, contains;对于 map,大概的方 法就是 put,remove,contains 等,因为,我只要在 eclispe 下按点操作符,很自然的这些方 法就出来了。我记住的一些思想就是 List 类会有 get(int index)这样的方法,因为它可以按 顺序取元素,而 set 类中没有 get(int index)这样的方法。List 和 set 都可以迭代出所有元素, 迭代时先要得到一个 iterator 对象,所以,set 和 list 类都有一个 iterator 方法,用于返回那

集合

帅比萌擦擦* 提交于 2019-12-16 20:15:10
集合 集合ArrayList 可以添加重复数据 ArrayList <e> list = new ArrayList <e> (); e:表示泛型----什么数据类型, 如果是基本数据类型就用包装类 如果不加 <e> ,那么集合可以同时存放基本数据类型和String类型 集合长度 size()方法,获取集合长度. 集合增加 add(Object obj);方法给集合添加数据, add(int index, Object obj);在指定下标index位置处添加obj数据; 1.index不能超出原来集合长度 2.如果下标index的位置上有值,就会把下标和之后的值往后移,把数据添加到下标index位置上. 集合删除 remove(Object obj)方法 集合删除 如果obj数据不是 int类型和char类型 ,就查找第一个然后把它删除 如果obj是 int类型和char类型 ,就会默认为是下标,找到对应下标的值删除 int类型和char类型 要删除的话,必须使用对应的封装包. int -----Integer. char -----Charatcer. 集合修改 set(int index, Object obj)方法,下标index 新的值obj 集合查找 indexOf ();方法,放回数据第一次找到的下标,没有放回-1 LastIndexOf();反向查找对应数据的下标

集合

被刻印的时光 ゝ 提交于 2019-12-06 15:12:33
collection 类型 interface 方法: int size () 集合长度 (注意与数组长度.lengh属性 和String长度 .lengh()方法区别) boolean isEmpty () 判断集合是否为空 boolean contains (Object o) 判断集合中是否存在object类型的元素o Iterator <E> iterator () 迭代器用法见后面集合的遍历 boolean add (E e) 向集合中增加元素 boolean remove (Object o) 删除集合中的元素 void clear () 删除集合中所有元素 细节: 基本数据类型的泛型集合,必须使用包装类 集合为空的判断 boolean isEmpty ()为true int size () 值为0 使用了void clear () list 类型 interface extends collection 特点: 有序的 有下标 可重复 方法: E get(int index) 获取指定下标元素 E set(int index, E element) 改变指定元素下标的值 int indexOf(Object o) int lastIndexOf(Object o) 细节 集合的 删除 int 类型 如果删除传入int类型,会默认为集合的下标