java中集合框架的概述

java集合类主要用于保存对象的。

常用的集合对象:

Colletion接口,Collection接口是集合中的顶层容器,表示的是一组对象,它的下面有两个子接口List接口和Set接口。

List接口:元素有序,可以重复。

ArrayList:底层以数组进行存储元素,存储在ArrayList中的元素是有序的,当容量不足时可以自动扩容。

LinkedList:底层以链表进行存储元素,插入和删除效率高。   

Set接口:元素无序,不可以重复。

         HashSet:底层是基于散列表实现的,底层的方法基本调用的HashMap中的方法,。

TreeSet:方法基本调用了TreeMap中的方法。

Map接口,以键值对的方式存储对象,不能存在重复的键,每个键也最多只能映射到一个值。

HashMap:底层是基于散列表实现的,jdk1.6使用数组和链表来存储元素,jdk1.8做了优化使用了数组,链表和红黑树来实现,当链表长度超过阈值                                         是,就会将链表转换成红黑树,从而减少查找时间。

Hashtable:现在基本不使用Hashtable了,在多线程环境下它的效率没有ConcurrentHashMap的效率高

TreeMap:底层基于红黑树实现的,能够自动对添加的对象进行排序,这个对象要实现Comparable接口。

          ConcurrentHashMap:jdk1.5引入的并发包中的类。采用多个分段锁,把Map分成多个Segment。

注意:Collections并不是集合,它是一个操作集合的工具类。与Arrays工具类类似。提供了许多操作集合的方法。

ArrayList

对于不需要频繁的查找和删除的操作,可以考虑选用ArrayList来进行存储。ArrayList不是线程同步的,不适于多线程环境下。如果在多线程环境下可以使用

Collections.synchronizedList(new ArrayList()),来将该列表包装起来。

LinkedList

适用于查找和删除操作频繁的情况,不适应需要频繁查找的情况。不是线程同步的。

ArrayList和LinkedList的区别?

1.ArrayList是基于数组来实现的,LinkedList是基于链表来实现的。

2.ArrrayList适合用于频繁的查找操作,LinkedList则适用于频繁的插入和删除操作。(多数据情况下,对于单条数据插入和删除ArrayList效率优于LinkedList)

HashSet和TreeSet

TreeSet在进行添加对象时,该对象应该实现内部比较器Comparable接口,否则抛出异常。

HashMap和Hashtable的区别与联系

1.Hashtable是线程同步的,Hashtable中的大部分方法都加了synchronized进行同步,HashMap是非线程同步的,不适合用在多线程环境下。

2.HashMap和Hashtable底层都是基于散列表来实现的。

3.Hashtable 是允许空的键值对的,Hashtable则不允许。

4.Hashtable还继承了Dictionary接口.

5.现在基本上不在使用Hashtable,在多线程环境下可以使用ConcurrentHashMap。

java容器简要概述的更多相关文章

  1. Java Reference简要概述

    @(Java)[Reference] Java Reference简要概述 Reference对象封装了其它对象的引用,可以和普通的对象一样操作. Java提供了四种不同类型的引用,引用级别从高到低分 ...

  2. java容器一:Collection概述

    Collection概览 java容器有两类,第一类是Collection,存储的是对象的集合:第二类是Map,存储的是键值对(两个对象以及它们之间的对应关系)的集合 Collection接口下面有三 ...

  3. 工作随笔—Java容器基础知识分享(持有对象)

    1. 概述 通常,程序总是运行时才知道的根据某些条件去创建新对象.在此之前,不会知道所需对象的数量,甚至不知道确切的类型,为解决这个普遍的编程问题:需要在任意时刻和任意位置创建任意数量的对象,所以,就 ...

  4. 1.java容器基本内容

    目录 java容器概述 1.collection接口 (1)collection接口方法 (2)set接口实现类 (3)list接口实现类 (4)queue接口实现类 2.map接口 java容器概述 ...

  5. Java 容器系列总结

    为什么要使用集合 当我们需要保存一组类型相同的数据的时候,我们应该是用一个容器来保存,这个容器就是数组,但是,使用数组存储对象具有一定的弊端, 因为我们在实际开发中,存储的数据的类型是多种多样的,于是 ...

  6. 备战-Java 容器

    备战-Java 容器 玉阶生白露,夜久侵罗袜. 简介:备战-Java 容器 一.概述 容器主要包括 Collection 和 Map 两种,Collection 存储着对象的集合,而 Map 存储着k ...

  7. 【Java心得总结七】Java容器下——Map

    我将容器类库自己平时编程及看书的感受总结成了三篇博文,前两篇分别是:[Java心得总结五]Java容器上——容器初探和[Java心得总结六]Java容器中——Collection,第一篇从宏观整体的角 ...

  8. 【Java心得总结六】Java容器中——Collection

    在[Java心得总结五]Java容器上——容器初探这篇博文中,我对Java容器类库从一个整体的偏向于宏观的角度初步认识了Java容器类库.而在这篇博文中,我想着重对容器类库中的Collection容器 ...

  9. 【Java心得总结五】Java容器上——容器初探

    在数学中我们有集合的概念,所谓的一个集合,就是将数个对象归类而分成为一个或数个形态各异的大小整体. 一般来讲,集合是具有某种特性的事物的整体,或是一些确认对象的汇集.构成集合的事物或对象称作元素或是成 ...

随机推荐

  1. ReorderList 的使用

    <asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">       ...

  2. phonegap文件,目录操作以及网络上传,下载文件(含demo)

    正在做一个跨平台的应用,需要使用phonegap进行文件的一些基本操作. 需求如下:可以选择本地图片,或者从相机选择图片,并进行显示在本地,然后上传到服务器,以及可以从服务器下载图片显示出来,如果本地 ...

  3. Angular(1)

    1.设计原则 1.YAGNI  不要把未来需求引入当前工程   2.KISS  keep it simple and stupid  语义化标记 合理注释 符合规定的命名 3.DRY(don't re ...

  4. Java为什么会引入及如何使用Unsafe

    综述 sun.misc.Unsafe至少从2004年Java1.4开始就存在于Java中了.在Java9中,为了提高JVM的可维护性,Unsafe和许多其他的东西一起都被作为内部使用类隐藏起来了.但是 ...

  5. oracle的char和varchar类型

    源地址:https://zhidao.baidu.com/question/140310197.html varchar与char的区别就在于是否可变长度.char(5)就是定义一个5个字符长度的字符 ...

  6. MFC中的各种DC区别

    转载自:xntop的<区别MFC中的CClientDC.CWindowDC.CPaintDC.CMetaFileDC> CClientDC及其子类 1. CClientDC类只能在客户区绘 ...

  7. mybatis oracle insert 返回新增的主键值

    <insert id="insertVmsTemplatePlayItem" parameterType="VmsTemplatePlayItem"> ...

  8. 【解决】SharePoint外部列表保存的日期/时间值不正确

    [问题描述]: 在SharePoint中创建一个外部列表后,通过工作流或直接通过外部列表中的新增向外部列表添加数据项.通过外部列表或数据库查看添加的数据项时发现日期类型字段的值都不正确,像是差了若干个 ...

  9. React 附件动画API ReactCSSTransitionGroup

    React为动画提供了一个附加组件ReactTransitionGroup,这个附加组件是动画的底层API,并且还提供了一个附件组件ReactCSSTransitionGroup,ReactCSSTr ...

  10. C#全角、半角转换

    全角:指一个字符占用两个标准字符位置:半角:指一字符占用一个标准的字符位置. using System; using System.Collections.Generic; using System. ...