`
pindai
  • 浏览: 4438 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

普通集合类

 
阅读更多
1:Collection接口:存放单个对象.
    -List
       - ArrayList
         ArrayList是以数组创建,填满的时候扩容是根据1.5+1,不过之前需要跟原数组大
         小 +1(minCapacity)比较,以大的为最新数组的容量。
         1:缩小容量用trimToSize();
         2:对非NULL用equals的方式寻找;
         3:非线程安全;

       - LinkedList
         LinkedList基于双向链表机制实现,一个entry有previous,next指向。查找和删除
         都须要遍历链表,非线程安全。

       - Vector
         Vector跟ArrayList基本原理一样,但在各个方法加了synchronized,所以线程安
         全.扩容方法也不同,Vector有一个参数capacityIncrement,  
         当capacityIncrement>0的时候,扩大为size+capacityIncrement。如果=<0,就扩
         大为size的两倍。

       - Stack
         Stack继承于Vector,在Vector的基础上实现后进先出(LIFO),提供
         push,pop,peek(获取最后一个元素).

     -Set
        Set和List最大的区别是Set不可以放重复的元素,HashSet,TreeSet不支持get(int).
       - HashSet
         基于HashMap实现,非线程安全。

       - TreeSet
         基于TreeMap实现,非线程安全,支持排序,可以传入Comparator



2:Map接口:key-value
      - HashMap
        HashMap是数组与链表的结合体,它有四个属性:
        key,value,hash,next.get(key)的时候首先通过key的hashcode查询,然后
        用key的equals找到在链表的具体位置。
         1:hash算法:hashcode & (lenght-1)取出在数组的位置。数组的长度都是2
            的n次方。new hashmap的时候会把数组容量对应到2的N次方;
         2:hashmap的三个因素:capacity,loadfactor,threshold;
            threshold=capacity*loadfactor(12=16*0.75);当元素超越
            threshold的时候会进行扩容resize.resize会重新计算现有元素的位置,
            所以比较耗性能,所以当知道多少元素的时候,可以初始它避免resize;如有
            1000个元素的时候,0.75*size>1000 和需要是2的N次方,所以size为
            2048,new HashMap(2048)
         3:对于key为null,会替换之前key为null的value,否则新建,next为第一个
           entry.所以get的时候对key为null的总拿第一个进行遍历。
         4:非线程安全,可以使用Collections.synchronizedMap。
   

      - TreeMap
        1:非线程安全。
        2:如果没有传入comparator,root非null,当key为null时候,抛出
           nullpointexception
分享到:
评论

相关推荐

    朴素贝叶斯训练集合

    朴素贝叶斯训练集合,普通样本测试,朴树贝叶斯 sklean 文本分类实现

    Java集合总结

    所有集合类都位于java.util包下,但支持多线程的集合类位于java.util.concurrent包下。集合里存存放的元素都是引用数据类型。 数组与集合的区别:(1)数组长度不可变且无法保存具有映射关系的数据;集合类用来保存数量...

    员工管理系统集合版Java代码

    学习面向对象的主要特征和基本概念,包括类、对象、继承、封装、多态、方法的重载和重写、Java的访问修饰符与其它关键字以及集合等。 案例难度 ★★★ 案例覆盖技能点 1、流程控制语句 2、类、对象 3、封装、...

    java各种功能集合和工具.rar

    Collections是操作集合对象的工具类 Objects是操作引用数据类型对象的工具类 Arrays的常用方法 普通排序 Arrays.sort(int[] a) Arrays.sort(int[] a, int fromIndex, int toIndex) 并行排序:JDK1.8新增 Arrays....

    P-集合,逆P-集合与信息智能融合-过滤辨识 (2012年)

    P-集合(Packet sets)是把动态特性引入到有限普通集合X内,改进有限普通集合x得到的。P-集合是由内 P-集合XF(internal packet set XF)与外P-集合XF(outer packet set XF)构成的集合对;或者,(XF,XF)是P-集合。P-...

    underscore

    underscore js工具类,underscore为集合类对象提供了一致的接口

    几个C++的数据结构

    array.h: 安全数组,可自动增长大小(随机访问,但扩充时效率低) linkedlist.h: 普通链表(可随机访问,但访问... 二叉搜索树 avltree.h: AVL 树 set.h: 集合类(元素不会重复) DFA: 通用自动机

    在线考试系统在线判题系统前端 html + css + js 后端 python + flask +mysql

    Students(用户学生信息,用户实体类中有一个Test_Content_Record集合类) Id User_Name Test_Content(题库) Id (题库内容) (题库结果) (题库分数,分数根据结果来定,如果输出的结果不一致则0分,如

    在线考试系统在线判题系统框架:前端 html + css + js 后端 python + flask +mysql

    Students(用户学生信息,用户实体类中有一个Test_Content_Record集合类) Id User_Name Test_Content(题库) Id (题库内容) (题库结果) (题库分数,分数根据结果来定,如果输出的结果不一致则0分,如

    CISCO 技术大集合

    CISCO 技术大集合 {适合你们的技术} 二、命令状态 1. router&gt; 路由器处于用户命令状态,这时用户可以看路由器的连接状态,访问其它网络和主机,但不能看到和更改路由器的设置内容。 2. router# 在router&gt;提示符...

    java8集合源码-Java8:java8实践

    java8集合源码Java8 java8实践 链接 函数式编程与 OOP Lambda 简介:- 如何将普通方法转换为 lambda 表达式。 匿名实现类和 lambda 的区别 单行 lambda 不需要返回。 事实上,没有大括号就不能使用它。 但它在多行 ...

    C# JSON通用转换类

    6. 普通集合转换Json 7. DataSet转换为Json 8. Datatable转换为Json 9. DataReader转换为Json 10. 解析JSON字符串生成对象实体 11. 解析JSON数组生成对象实体集合 12. 反序列化JSON到给定的匿名对象

    c语言实现动态数组代码

    动态数组是一种比较常用的集合类,其相对于普通数组的优势是可以自动增容,相对于链表的优势是可以下标访问。

    Json帮助类.rar

    list集合转换为json,普通集合转换为json,datatable转换为json,对象转换为json,类库代码提供给大家,希望对大家学习有帮助。

    蓝桥杯复习模块集合.zip

    蓝桥杯大赛,全称是蓝桥杯全国软件和信息技术专业人才大赛,是由中华人民共和国工业和信息化部人才交流中心主办,国信蓝桥教育科技(北京)股份有限公司承办的计算机类学科竞赛。这是一个全国高校参加的赛事,累计...

    Python标准库之collections包的使用教程

    所以这个时候我们就要用到Python标准库为我们提供的collections包了,它提供了多个有用的集合类,熟练掌握这些集合类,不仅可以让我们让写出的代码更加Pythonic,也可以提高我们程序的运行效率。 defaultdict ...

    详解C++编程中类的成员变量和成员函数的相关知识

    类这种数据类型是一个包含成员变量和成员函数的一个集合。 类的成员变量和普通变量一样,也有数据类型和名称,占用固定长度的内存空间。但是,在定义类的时候不能对成员变量赋值,因为类只是一种数据类型,本身不...

    Java语言程序设计的课程设计项目——利用Java实现地球系动画完整实现实例(第3部分).pdf

    (3)Java 中的动态数组——其实为 Java 中的集合类 为什么要应用静态数组而不使用 Java 中的集合类(如 ArrayList 等)产生动态数组?主要 是考虑到效率和类型两方面的问题。 1) 效率: 要想保存和随机访问一系列...

    接口和抽象类的区别(面向对象)

    而接口呢~还是拿教师做例子,教师的行为很多,除了和普通人相同的以外,还有职业相关的行为,比如改考卷,讲课等等,我们把这些行为定义成无body的方法,作为一个集合,它是一个interface。而教师张三李四的各自行为...

    java常用工具类的使用

    而Date的其他构造方法和普通方法的API都不容易实现国际化,因此目前Date类的大多数方法都被标识为过时,表示更灵活的时间类请参考java.util.Calendar。 Date的输出结果是按照国际通用格式输出的,而中国更习惯于...

Global site tag (gtag.js) - Google Analytics