集合覆盖问题

JavaSE基础学习笔记-集合框架2

本秂侑毒 提交于 2019-12-01 18:29:43
今天复习了一下Java集合框架的另一个成员Set 和 Map,发现集合不是那么简单是,当然想会用很容易,但是理解当中的一些原理,还是要花些功夫。 首先说一下Set集合。 Set集合是一个完美的Collection子类,因为Set集合的方法完全继承自Collection,没有任何特有的方法,即便如此,Set和List可以说是非常不同的两个集合子类,Set本身也是一个接口,它有许多实现类,最常见的有HashSet,TreeSet和LinkedHashSet. Set集合中不允许存储相同元素,同时就这三个子类而言有着完全不同的特性。 当你尝试将一个自定义类型的对象放置到一个Set中,你就必须要考虑应用哪个Set的子类,并且根据这个子类来对你所创建的对象的类进行进一步编码。 首先,HashSet,从字面上很容易看出,这个机会有一个基于哈希表的数据结构,如果一个类对象被装入HashSet集合那他就必须同时复写Object的equals方法和hashCode方法,具体原因还没弄太明白,总的来说就是不因为不能保证元素的唯一性,而覆盖这两个方法根据自己的需求对其进行编码可以很好的解决这个问题 然后是TreeSet,这个集合是基于红-黑树的数据结构,核心思想就是比较两个元素的大小,然后根据比较结果来对元素进行具体的内存分配,所以元素的比较性对于TreeSet而言是必须的

JAVA三种集合LIST、SET、MAP ——详解

被刻印的时光 ゝ 提交于 2019-12-01 17:15:00
1. 集合框架介绍 我们知道,计算机的优势在于处理大量的数据,在编程开发中,为处理大量的数据,必须具备相应的存储结构,之前学习的数组可以用来存储并处理大量类型相同的数据,但是通过上面的课后练习,会发现数组在应用中的限制:数组长度一旦确定,就无法更改;除非采用建立新数组,再将原数组内容拷贝过来;数组中只能存放指定类型的数据,操作不方便。在实际开发中,为了操作方便,JDK中提供了List集合。 List集合与数组的用途非常相似,都是用来存储大量数据的,不同处有两点: 1. 数组长度在使用前必须确定,一旦确定不能改变。而List集合长度可变,无需定义。 2. 数组中必须存放同一类型的数据,List集合中可以存放不同类型的数据。 List集合是Java集合框架中的一种,另外两种集合Set和Map会在下面介绍。List集合在JDK中被封装称为接口,针对List接口,有若干种实现,常用的有三个子类,即ArrayList、Vector和LinkedList。这三个类的功能与用法相同,但内部实现方式不同。下面以ArrayList为例介绍集合的常用操作,Vector和LinkedList的使用方法与ArrayList类似。 数组与List集合的常规操作类似,下面通过代码对比两者的用法: 代码演示:数组的基本操作 public class ArrayDemo { public static void

java集合框架详解

这一生的挚爱 提交于 2019-11-29 12:44:09
一、概述 Java集合类主要由两个根接口Collection和Map派生出来的,Collection派生出了三个子接口:List、Set、Queue(Java5新增的队列),因此Java集合大致也可分成List、Set、Queue、Map四种接口体系,(注意:Map不是Collection的子接口)。 数据与集合的区别 数组长度不可变化而且无法保存具有映射关系的数据;集合类用于保存数量不确定的数据,以及保存具有映射关系的数据。 数组元素既可以是基本类型的值,也可以是对象;集合只能保存对象。 二、Collection UML图 其中List代表了有序可重复集合,可直接根据元素的索引来访问;Set代表无序不可重复集合,只能根据元素本身来访问;Queue是队列集合;Map代表的是存储key-value对的集合,可根据元素的key来访问value。   上图中淡绿色背景覆盖的是集合体系中常用的实现类,分别是ArrayList、LinkedList、ArrayQueue、HashSet、TreeSet、HashMap、TreeMap等实现类。 collection的API Collection 接口将对象组织到一起。数组不能调整大小,并且只能组织相同类型的对象,而Collections允许添加任何类型的对象,并且不强迫你指定初始大小。 需要注意的重要的一点是, Collection 扩展了

Redis各类型应用场景

大憨熊 提交于 2019-11-29 00:53:50
Redis 的六种特性 l Strings l Hashs l Lists l Sets l Sorted Sets l Pub/Sub Redis 各特性的应用场景 Strings Strings 数据结构是简单的 key-value 类型, value 其实不仅是 String ,也可以是数字。 常用方法 方法 说明 特性 set 设置 key 对应的的值为 String 类型的 value get 获取对应 key 对应的 String 的值,如果不存在返回 nil setnx 设置可以为对应的值为 String 类型的 value ,如果 key 存在返回 0 不覆盖,不存在返回 1 nx 的意思为 not exist Set the value of a key, only if the key does not exist setex 置 key 对应的值为 String 类型的 value ,并指定此键值对应的有效期 SETEX key seconds value 例: setex mykey 10 你好 setrange 设置 key 的 value 的子字符串 setrange key 位置 替换的内容 如果替换内容没有原 value 长 , 则原 value 剩余的内容将被保留 mset 一次设置多个 key 的值,成功返回 ok ,失败返回 0 ,