单例集合的体系

---------|Collection 单例集合的根接口

----------------|List接口 实现了List接口的对象具备有序可重复的特点

-------------------|ArrayList 实现了List接口 底层采用了Object数组实现,特点是查找快,增删慢

-------------------|LinkList 实现了List接口 底层采用了链表实现,特点是查找慢,增删快

-------------------|Vector 实现原理与Arraylist相同,但是事线程安全的,操作效率低,jdk1.0的时候就出现了,现在已经不推荐使用.

----------------|Set 接口 实现了Set接口的对象具备无序不可重复的特点

-------------------|HashSet 底层使用了了哈希表支持

HashSet存储原理:

  1、当往HashSet里存放元素的时候,会根据对象的hashCode方法获取对象的哈希码值然后做一系列运算后得出对象的存储位置

  2、如何元素要存储的位置是空的那么直接存储,否则的话进入下一步

  3、当元素要存储的位置不为空时,会调用该元素的equal方法与该位置上已有的元素进行比较,如果返回值是false说明两者不是同一个对象,可以存储,否则的话就要舍弃改元素,不能存放进HashSet.

-------------------|TreeSet 底层使用红黑(二叉树)实现,特点是会对存储的元素进行排序.

TreeSet注意事项

  1、往TreeSet存放对象时,如果对象本身具备自然顺序(如1、2、3... ...),那么会根据自然顺序进行排序

  2、存放的对象如果不具备自然顺序时,那么要存放的元素要实现Comparable接口,然后在compareTo上定义比较规则

  3、如果存放的对象没有实现Comparable接口时,那么在创建TreeSet对象时必须要传入一个比较器,用来定义比较规则

  比较器的定义格式、

    class 类型implemets Comparator{

      comparato(){

        return

      }

    }

  如果返回值是0的话说明两者对象相同,TreeSet将不予添加当前对象

时间: 2024-10-07 01:42:02

单例集合的体系的相关文章

斗地主案例——单例集合

第一步准备牌: 第二步洗牌: 其中,集合有个静态方法suffle,就是洗牌意思,随机搅乱集合元素顺序: 调用静态方法直接用类名点方法: 第三步发牌: 其中,使用%即模函数,模2的话则有两种结果(0和1):模3则有三种结果(0和1和2): 增强for即for each没有索引,所以轮流发牌只能用for循环,不能使用for each; 索引就是指向有序集合或数组的下标:类似指针: 原文地址:https://www.cnblogs.com/wmqiang/p/10659458.html

java基础35 双例集合Map及其常用方法

单例集合的体系: ---------| collection  单例集合的根接口--------------| List  如果实现了list接口的集合类,具备的特点:有序,可重复       注:集合中的有序不是指自然顺序,而是指添加进去的顺序与出来的顺序是一致的------------------| ArrayList  ArrayList底层维护了一个object数组的实现的.(线程不安全),特点:查询速度快,增删速度慢.(有序,可重复)------------------| Linked

设计模式的征途—1.单例(Singleton)模式

单例模式属于创建型模式的一种,创建型模式是一类最常用的设计模式,在软件开发中应用非常广泛.创建型模式将对象的创建和使用分离,在使用对象时无需关心对象的创建细节,从而降低系统的耦合度,让设计方案更易于修改和扩展.每一个创建型模式都在视图回答3个问题:3W -> 创建什么(What).由谁创建(Who)和何时创建(When). 本篇是创建型模式的第一篇,也是最简单的一个设计模式,虽然简单,但是其使用频率确是很高的. 单例模式(Singleton) 学习难度:★☆☆☆☆ 使用频率:★★★★☆ 一.单例

Python全栈开发之9、面向对象、元类以及单例

前面一系列博文讲解的都是面向过程的编程,如今是时候来一波面向对象的讲解了 一.简介 面向对象编程是一种编程方式,使用 “类” 和 “对象” 来实现,所以,面向对象编程其实就是对 “类” 和 “对象” 的使用.类就是一个模板,模板里可以包含多个方法(函数),方法里实现各种各样的功能,,对象则是根据模板创建的实例,通过实例,对象可以执行类中的方法,每个对象都拥有相同的方法,但各自的数据可能不同. 二.类.对象和方法 在Python中,定义类是通过class关键字,class后面紧接着是类名,类名通常

黑马程序员--Java基础学习笔记【单例设计模式、网络编程、反射】

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 设计模式分类: 创建模式:是对类的实例化过程的抽象化,又分为类创建模式和对象创建模式 类创建模式:工厂方法模式 对象-:简单工厂(静态工厂方法)模式.抽象工厂模式.单例模式.建造模式- 结构模式:描述如何将类或者对象结合在一起形成更大的结构 适配器模式.缺省模式.合成模式.装饰模式(包装模式).门面模式- 行为模式:对不同的对象之间划分责任和算法的抽象化 不变模式.策略模式.迭代子模式.命令模

七、创建型模式之建造者、原型、单例-----《大话设计模式》

一.建造者模式 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 建造者模式的好处就是使得建造代码与表示代码分离,由于建造者隐藏了该产品是如何组装的,所以若需要改变一个产品的内部表示,只需要再定义一个具体的建造者就可以了. 指挥者这个类用来控制建造过程,也用来隔离用户与建造过程的关联. Builder:人 ConcreteBuilder1:胖子 ConcreteBuilder2:瘦子 Director:开始组装 Product:成果 //具体产品类,最终形成的产品样式

从一个简单的Java单例示例谈谈并发

一个简单的单例示例 单例模式可能是大家经常接触和使用的一个设计模式,你可能会这么写 public class UnsafeLazyInitiallization { private static UnsafeLazyInitiallization instance; private UnsafeLazyInitiallization() { } public static UnsafeLazyInitiallization getInstance(){ if(instance==null){ /

从一个简单的Java单例示例谈谈并发 JMM JUC

原文: http://www.open-open.com/lib/view/open1462871898428.html 一个简单的单例示例 单例模式可能是大家经常接触和使用的一个设计模式,你可能会这么写 public class UnsafeLazyInitiallization { private static UnsafeLazyInitiallization instance; private UnsafeLazyInitiallization() { } public static U

struts2的action是多例,servlet是单例

struts2中action是多例的,即一个session产生一个action如果是单例的话,若出现两个用户都修改一个对象的属性值,则会因为用户修改时间不同,两个用户访问得到的 属性不一样,操作得出的结果不一样.举个例子:有一块布长度300cm,能做一件上衣(用掉100cm)和一件裤子(用掉200cm);甲和乙同时访问得到的 长度都是300cm,甲想做上衣和裤子,他先截取100cm去做上衣,等上衣做完再去做裤子,而乙这时正好也拿100cm去做上衣,那 好,等甲做完上衣再做裤子的时候发现剩下的布(