首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java集合框架(二)—— HashSet、LinkedHashSet、TreeSetEnumSet

; } }    从上面程序可以看出,books集合两次添加的字符串对象明显不是同一个对象(因为两次都调用了new关键字来创造字符串对象),这两个字符串对象使用==运算符判断肯定返回false...HashSet类   HashSet具有以下特点: HashSet具有很好的对象检索性能,从HashSet查找某个对象Java系统首先调用对象的hashCode方法获得该对象的哈希码,然后根据哈希码找到对应的存储区域...HashSet存储对象的效率相对要低些,因为向HashSet集合添加对象的时候,首先要计算出来对象的哈希码根据这个哈希码来确定对象集合的存放位置。 不能保证排列的顺序顺序有可能发生改变。...也就是说遍历LinkedHashSet集合里的元素,HashSet将会按元素的添加顺序来访问集合里的元素。   ...EnumSet的集合元素也是有序的,EnumSet以枚举值Enum类内的定义顺序来决定集合元素的排序

1.2K90

Java 基础篇】Java 自然排序:使用 Comparable 接口详解

Java 编程,我们经常需要对对象进行排序。为了实现排序Java 提供了 java.lang.Comparable 接口,它允许我们定义对象之间的自然顺序。...自然排序是一种默认的对象排序方式,它是根据对象的内在特征或属性来排序的。例如,对于整数,自然排序是按照数字的大小进行排序;对于字符串,自然排序是按照字母的字典顺序进行排序。...自然排序通常是最直观常见的排序方式,它使得对象集合以一种有序的方式存储检索。 Java ,自然排序是通过 Comparable 接口来实现的。...字符串排序:对字符串进行按字母顺序排序。 产品价格排序:将产品对象按照价格属性进行排序,以便按价格升序或降序列出产品。...自然排序Java 强大的排序工具之一,帮助您轻松管理操作对象集合

43130
您找到你想要的搜索结果了吗?
是的
没有找到

Java基础总结大全(2)

例如: "nbasdnbafllgnbahjnbakqqqqlnba" 在这个字符串,多有个nba. 5:对字符串字符进行自然顺序排序。...方法, 此方式是元素的自然顺序 TreeSet排序的第一种方式:元素自身不具备比较性(比如存储学生对象)或者具备的 比较性不是我们所需要的比较性(比如想字符串的长度排序), 此时就需要让集合自身具备自定义的比较性...的两个学生对象,但是他们nameage一样,我们认为是 同一个对象,所以为了保证元素的唯一性,我们通常在往HashSet集合里面存储元素定义对象的类通常复写hashCode...:让集合具备比较性 元素自身不具备比较性(比如存储学生对象)或者具备的 比较性不是我们所需要的比较性(比如想字符串的长度排序), 此时就需要让集合自身具备自定义的比较性。...:元素自身不具备比较性(比如存储学生对象)或者具备的 比较性不是我们所需要的比较性(比如想字符串的长度排序), 此时就需要让集合自身具备自定义的比较性。

1.5K90

普林斯顿算法讲义(一)

一个表达式包含多个运算符,优先级顺序指定它们应用的顺序:运算符*/(以及%)的优先级高于(+-运算符之前应用);逻辑运算符,!具有最高优先级,其次是&&,然后是||。...如果两个队列按相同顺序包含相同项目,则它们相等。如果两个袋子包含相同项目但顺序不同,则它们相等。 整数集合。 创建一个表示 0 到 N-1 之间(无重复)整数集合的数据类型。...给定三个集合 A、B C,每个集合最多包含 N 个整数,确定是否存在三元组 a A ,b B ,c C ,使得 a + b + c = 0。...答案:按升序对 B 进行排序;按降序对 C 进行排序;对于 A 的每��a,扫描 B C,找到一个对,使得它们的为-a(太小时, B 前进,太大 C 前进)。 两数之和。...给定两个集合 A B,每个集合最多包含 N 个整数,确定 A 任意两个不同整数是否等于 B 的一个整数。 连续

7310

Redis底层数据结构详解

确定插入的层数k后,则需要将新元素插入到从底层到k层。 ③、删除:各个层中找到包含指定值的节点,然后将节点从链表删除即可,如果删除以后只剩下头尾两个节点,则删除这一层。...(3)升级 当我们新增的元素类型比原集合元素类型的长度要大,需要对整数集合进行升级,才能将新元素放入整数集合。具体步骤: 1、根据新元素类型,扩展整数集合底层数组的大小,并为新元素分配空间。...2、将底层数组现有的所有元素都转成与新元素相同类型的元素,并将转换后的元素放到正确的位置,放置过程,维持整个元素顺序都是有序的。 3、将新元素添加到整数集合(保证有序)。...(4)整数集合不支持降级操作 六、压缩列表 (1)压缩列表(ziplist)是Redis为了节省内存而开发的,是由一系列特殊编码的连续内存块组成的顺序型数据结构,一个压缩列表可以包含任意多个节点(entry...,键值是挨着的,元素是按照值由小变大排序的。

6.3K22

Java Stream流详解

toMap 方法,我们以每个整数的字节值为键,该整数乘以 2 为值,遇到重复的键时取最后一个值。...在这段代码集合的元素都是整数,使用distinct()方法去除了所有重复的整数,返回一个新的元素不重复且顺序不变的List集合。...在这段代码集合包含了5个整数,使用limit(3)方法仅保留了前3个整数,返回一个新的只包含前3个元素的List集合。...具体来说,它使用 forEach() 方法遍历列表的所有元素,并对每个元素执行打印操作。 其中,四个字符串元素按顺序打印到了控制台上。...实际开发,应该根据具体情况来决定是否使用Stream流。一般建议在数据集较大或者需要进行复杂的数据处理操作使用Stream流,而在一些简单的操作则可以直接使用循环传统的集合操作方法。

20630

普林斯顿算法讲义(三)

Topological.java 使用深度优先搜索来解决这个问题。值得注意的是, DAG 的逆后序提供了一个拓扑顺序。 命题。 有向图具有拓扑顺序且仅它是 DAG。 命题。...程序 LSD.java 实现了用于固定长度字符串的 LSD 基数排序。它包括一种用于对待每个整数作为 4 字节字符串处理的 32 位整数进行排序的方法。... N 很大,这种算法比系统排序快 2-3 倍。 MSD 基数排序。 程序 MSD.java 实现了 MSD 基数排序。 三向字符串快速排序。...(Bentley-Sedgewick)给定一个输入集,无论字符串插入的顺序如何,其 TST 的节点数都是相同的。 证明。集合,TST 每个不同字符串前缀都有一个唯一的节点。...包含前缀。 向StringSET添加一个方法containsPrefix(),接受字符串 s 作为输入,并在集合存在包含 s 作为前缀的字符串返回 true。 子字符串匹配。

10710

【建议收藏合集整理】国一大佬带你,蓝桥杯Java组拿奖基础知识整理集合,看完,3天冲蓝桥杯省一。

字符串StringBuilder方法的一些具体例子: 涉及到大量字符串操作或需要频繁修改字符串内容,使用 StringBuilder 类可以提高效率。...下面是使用Java排序库使用的一些具体例子: Java 提供了多种排序算法排序库,其中比较常用的是 Arrays.sort() 方法 Collections.sort() 方法,分别用于对数组集合进行排序...下面是关于一维数组二维数组的知识点示例: 一维数组(Array)知识点: 定义:一维数组是具有相同数据类型的元素按顺序排列的集合。 长度:一维数组的长度创建就确定,无法改变。...(11)哈希表set的使用 谈到Java的哈希表,我们通常指的是HashSet,它是基于哈希表实现的Set接口的一个类。...不保证集合中元素的顺序,即不保证集合中元素的存储顺序插入顺序一致。 允许存储null元素。

7710

Redis详解(五)------ redis的五大数据类型实现原理

注意:Redis,键总是一个字符串对象,而值可以是字符串、列表、集合等对象,所以我们通常说的键为字符串键,表示的是这个键对应的值为字符串对象,我们说一个键为集合,表示的是这个键对应的值为集合对象...而embstr的坏处也很明显,如果字符串的长度增加需要重新分配内存,整个redisObjectsds都需要重新分配空间,因此redis的embstr实现为只读。...3、列表对象   list 列表,它是简单的字符串列表,按照插入顺序排序,你可以添加一个元素到列表的头部(左边)或者尾部(右边),它的底层实际上是个链表结构。...intset 编码的集合对象使用整数集合作为底层实现,集合对象包含的所有元素都被保存在整数集合。   ...对于整数值,判断操作复杂度为O(1);对于普通字符串,判断复杂度为O(n);而对于哈希、列表、集合有序集合,判断的复杂度为O(n^2)。

1.1K00

对于初学者来说,有哪些好的 Python 示例?

数字 - Python 最常见的内置数据结构是整数、复数浮点数。 例 5, 2+3i, 3.5. 列表 − 列表是按特定顺序排序的对象集合。列表的组成部分可以是多种数据类型。...例 (10, ‘tutorialspoint’, 4.89) 字符串 − 字符串字符集合。可以使用单引号或双引号声明字符串。 例 “Hello ‘tutorialspoint’”....集合集合是不按任何特定顺序排列的不相关项的集合。 例 (5, 2, 8, 1) 字典 - 字典是键值对的集合,其中每个值都可以通过其键访问。项目的顺序/顺序无关紧要。...Java,情况并非如此,Java,它是可选的。局部变量有助于区分类的方法属性。 类的 self 变量对应于 init 方法中新创建的对象,但它引用了可以类的其他方法调用其方法的实体。...它被执行时,什么都不会发生。 continue - 满足指定条件,将控制发送到循环的开头,从而允许跳过循环当前执行的某些部分。 如何将字符串的每个字符转换为小写字母?

2K40

Java中常用的API

//等效于移除第一个元素removeFirst(); public boolean isEmpty();如果列表不包含元素,则返回true linked.clear();//清空集合的元素,获取元素的元素会抛...for循环遍历 是一个无序的集合,储存元素取出元素的顺序可能不一致 底层是一个哈希表结构(查询速度非常快) 哈希表 哈希值是一个十进制的整数,由系统随机给出(就是对象的地址,是一个逻辑地址,是模拟出来得到的类...super T>);将集合中元素按照指定顺序排序 注意: sort(List list)使用前提:被排序集合里边存储的元素,必须实现Comparable,重写接口中的方法compareTo定义排序...java.util.Map集合 Map集合的特点: Map集合是一个双列集合,一个元素包含两个值(一个key,一个value) Map集合的元素,keyvalue的数值类型可以相同,也可以不同...,储存元素取出顺序可能不一致 java.util.LinkedMap集合特点: LinkedHashMap集合底层是哈希表+链表(保证迭代顺序) LinkedHashMap集合是一个有序的集合,储存顺序取出顺序一样

97940

上海某小厂面试,差点没扛住。。。

对于字符串变量来说,使用"==""equals"比较字符串,其比较方法不同。 "=="比较两个变量本身的值,即两个对象在内存的首地址,"equals"比较字符串包含内容是否相同。...对于非字符串变量来说,如果没有对equals()进行重写的话,"==" "equals"方法的作用是相同的,都是用来比较对象堆内存的首地址,即用来比较两个引用变量是否指向同一个对象。...通过Integer.valueOf(int)方法创建一个在这个范围内的整数对象,并不会每次都生成新的对象实例,而是复用缓存的现有对象,会直接从内存取出,不需要新建一个对象....LinkedHashMap: 基于哈希表双向链表实现的Map集合,保持插入顺序或访问顺序。 PriorityQueue: 优先队列,可以按照比较器或元素的自然顺序进行排序集合遍历的方法有哪些?...因此最终执行的指令序列,C不能被重排序到AB的前面,如果C排到AB的前面,那么程序的结果将会被改变。但AB之间没有数据依赖关系,编译器处理器可以重排序AB之间的执行顺序

10610

细谈Redis五大数据类型

减少内存分配次数,SDS拼接字符串发生,如果此时的字符串长度len小于1M,则SDS会分配len大小相同的未使用空间给free,如果此时的字符串长度len大于1M,则SDS会分配1M的未使用空间给...free,字符串缩短时,缩短的空间会叠加到free,用于后续的拼接使用。...常规计数:博客数,阅读数 List数据类型 List数据结构是用来存储多个有序的字符串,List的每个字符串成为元素,List提供了节点重排节点顺序访问的能力,Redis,List可以两端...因为为了减轻性能的消耗,RedisSet集合元素都为整型,会使用一种基于动态数组的结构体,同时push元素的时候控制元素的大小顺序,这样就可以使用二分查找算法来对元素进行push及pop操作,这样时间复杂度仅为...SortSet数据类型 有序集合Set集合的基础上,保留了Set集合不能存在重复元素的特性,但是不同的是,SortSet集合中元素是可以排序的,SortSet排序List排序都可以使用索引下标作为排序依据

62560

图解leetcode5-10 | 233酱一起刷leetcode系列(2)

如何知道字符串s的各个字符在哪个arr数组的哪个索引位置呢?这就是我们用数字字符字符串来举例子的好处了,因为数字的值就对应着字符字符串s的下标。...至于示例列举的几个边界条件,Java整数是带有符号的。刚好符合我们的乘除运算。 另外,需要判断乘法计算正负数字的越界问题。当然如果res用long表示,也就不需要考虑这个问题了。...注意:假如该字符串的第一个非空格字符不是一个有效整数字符字符串为空或字符串包含空白字符,则你的函数不需要进行转换,即无法进行有效转换。...这种情况下分治算法需要对子子问题反复求解,而动态规划算法只对子子问题求解一次,将其结果保存到备忘录 or 按照 自底向下 的顺序 求解每个子问题(也就是保证求解子问题,它所依赖的子子问题的解已经求出来了...p[j] == '*',我们需要枚举* 代表的从0-多个字符字符序列集合,s 是否与他们其中之一匹配。 ?

42530

Java 语言基础 (常用类的概述使用, String 类的概述使用, 可变字符串日期相关类, 集合类库)

整型的包装类将 -128 到 127 之间的整数已经装箱完毕,程序中使用该范围之间的整数,无需装箱直接取用常量池中的对象即可,从而提高效率。... Java 5 发布之前使用包装类对象进行运算,需要较为繁琐的“拆箱”“装箱”操作;即运算前先将包装类对象拆分为基本类型数据,运算后再将结果封装成包装类对象。...regex 的字符串替换成 replacement 可变字符串日期相关类 可变字符串类 基本概念 由于String类描述的字符串内容是个常量不可改变,需要在 Java 代码描述大量类似的字符串...字符串的长度超过了字符串对象的初始容量,该字符串对象会自动扩容,默认扩容算法是:原始容量 << 1 + 2 = 原始容量 * 2 + 2 一般执行效率:StringBuilder > StringBuffer...的日期相关类 Java 8 日期类的由来 JDK 1.0 包含了一个 java.util.Date 类,但是它的大多数方法已经 JDK 1.1 引入Calendar 类之后被弃用了。

98830

Redis 基础数据结构

因为使用len表示当前字符串长度,capacity表示内存分配空间,往sds字符串添加过多字符(len达到capacity大小),则会触发扩容,字符串长度大小小于1M,扩容策略为成倍扩容;大于1M...压缩列表 压缩列表是列表哈希的底层实现之一,一个列表键只包含少量列表项,并且每个列表项是小整数或者短的字符串,那么会使用压缩列表作为列表键的底层实现。...压缩列表是Redis为了节约内存开发的,由一系列特殊编码的连续内存块组成的顺序性数据结构。一个压缩列表可以包含多个节点,每个节点保存一个字节数组或者一个整数值。 ?...每个跳跃表节点层高都是1~32的随机值,同一个跳跃表,多个节点可以包含相同的分值,但是每个节点的成员对象必须是唯一的。分值相同时,节点按照成员对象的大小排序。 ?...整数集合 整数集合集合的底层实现之一,一个集合包含整数元素,并且集合中元素数量不多时,Redis就会使用整数集合作为集合建的底层实现。

1.1K30

深入浅出Redis-redis底层数据结构(下)

区别于C语言字符串,具有良好的伸缩性,获取字符串长度,字符串修改,防止缓存区溢出等性能都比C语言字符串好       2、链表:顺序存储对象信息,有用于缓存链表长度的属性,插入删除对象功能中有良好性能...这样定义整数集合:“整数集合集合建的底层实现之一,一个集合包含整数,且这个集合的元素数量不多时,redis就会使用整数集合intset作为集合的底层实现。”      ...,但是当我们存入的整数不符合整数集合的编码格式,就需要使用到Redis 的升级策略来解决     Intset 升级整数集合并添加新元素共分为三步进行:       1、根据新元素的类型,扩展整数集合底层数组的空间大小...一个列表键只把汗少量列表项,并且每个列表项要么就是小整数,要么就是长度比较短的字符串,那么Redis 就会使用压缩列表来做列表键的底层实现。   ...7.3 总结     压缩列表是一种为了节约内存而开发的顺序型数据结构     压缩列表被用作列表键哈希键的底层实现之一     压缩列表可以包含多个节点,每个节点可以保存一个字节数组或者整数

1.1K70

Java Review (二十六、集合----- Set 集合

HashSet 按 Hash算法来存储集合 的元素,因此具有很好的存取查找性能。  HashSet 具有以下特点 : 不能保证元素的排列顺序顺序可能与添加顺序不同,顺序也有可能发生变化 。...元素比较 向 HashSet 集合存入一个元素, HashSet 会调用该对象的 hashCode()方法来得到该对象的hashCode 值,然后根据该 hashCode 值决定该对象...向 HashSet 添加可变对象,必须十分小心 。 如果修改 HashSet 集合 的对象,有可能导致该对象与 集合的其他对象相等,从而导致 HashSet 无法准确访问该对象 。...也就是说 , 遍历 LinkedHashSet 集合里的元素, LinkedHashSet 将会按元素的添加顺序来访问集合里的元素。...String: 按字符串字符的UNICODE 值进行 比较。 Date 、 Time: 后面的时间、日期比前面的时间、日期大。

68510

JAVA常用API整理

, int endIndex) 返回一个新字符串包含原始字符串从beginIndex到串尾或到endIndex-1的所有代码单元 String toLowerCase()String toUpperCase...static String toString(type[] a) 返回包含a数据元素的字符串 static void sort(type[] a) 采用优化的快速排序算法对数组进行排序 static...程序使用集合时,一旦构建了集合就不需要知道究竟使用了哪种实现。因此,只有构建集合对象,使用具体的类才有意义。可以使用接口类型存放集合的引用。...java.util.ProrityQueue 优先级队列的元素可以按任意顺序插入,却总是按照排序顺序进行检索。优先级队列由堆实现。...实际使用,如果更新图不需要保持图中元素的顺序,就使用HashMap,如果需要保持图中元素的插入顺序或者访问顺序,就使用LinkedHashMap,如果需要使图按照键值排序,就使用TreeMap。

2K41

不懂这些,简历上都不敢写自己熟悉Redis

跟着我一起来看看看Redis有什么引人入胜的吸引力~ 本文收录在我开源的《Java学习面试指南》,一份覆盖Java程序员所需掌握的Java核心知识、面试重点。希望收到大家的 ⭐ Star ⭐支持。...(1)字符串字符串是Redis最基础,也是业务开发中最常见的一种数据类型。在业务上一般使用MySQL作为实际存储层,而Redis字符串作为缓冲层对象。...所以Redis内部会对有序集合采用字典跳跃表两种实现,使用对应不同场景,就采用对应的不同数据结构来高效操作有序集合。 3. 压缩列表 面试官:压缩列表呢?...列表键里如果包含的都是类似小整数、短字符串类型的,会采用压缩列表的底层实现。...,同时键、值都是类似小整数、短字符串类型的,会采用压缩列表的底层实现。

3100
领券