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. 【转】Linux CentOS内核编译:下载CentOS源码、编译2.6.32-220的错误(apic.c:819 error 'numi_watchdog' undeclared)

    一.下载CentOS源码 1.1 查看CentOS版本 cat /etc/issue 1.2 查看Linux内核版本 uname -r 1.3 下载 文件名:kernel-2.6.32-220.el6 ...

  2. [工具开发] 一信通 Web 短信发送客户端

    一.简介 为了协助公司运营部对几家短信平台进行测试,我根据各自的接口文档编写了几个简单的短信发送客户端: 下面是一信通 Web 短信发送客户端,使用 HTTP GET 方法. 二.效果图 1. 首页 ...

  3. IOS启动页设置适应ios8/9

    直接上截图 1. 添加对应尺寸的图 2.设置三项 3.去掉默认设置 4.特别的xcode 7 需 通过在p.list配置文件中增加节点: Launch image 类型为String 设置值为Defa ...

  4. ASP.NET中进行消息处理(MSMQ) 一(转)

    MSMQ是微软消息队列的英文缩写.那么什么是消息队列?这些介绍网上一大片这里就不多说了.本文对于大虾级的人物来说这只是小玩意而已,对于初学者来说这文章还是有一定的帮助,希望路过的大虾们别笑话我班门弄斧 ...

  5. 重装系统分区时,发现一个叫LVM的东西,找出来和大家分享

    LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,它由Heinz Mauelshagen在Linux 2.4内核上实现,目前 ...

  6. 防止SQL注入攻击的一些方法小结

    SQL注入攻击的危害性很大.在讲解其防止办法之前,数据库管理员有必要先了解一下其攻击的原理.这有利于管理员采取有针对性的防治措施. 一. SQL注入攻击的简单示例. statement := &quo ...

  7. 通过AngularJS实现图片上传及缩略图展示

    从项目中截出的代码 HTML部分: <section> <img src="image/user-tuijian/tuijian_banner.png" /> ...

  8. python基础05 缩进与选择

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 缩进 Python最具特色的是用缩进来标明成块的代码.我下面以if选择结构来举例. ...

  9. Linux 相关基础笔记

    html,body { } .CodeMirror { height: auto } .CodeMirror-scroll { } .CodeMirror-lines { padding: 4px 0 ...

  10. php加密解密0x数组

    <?php //加密字符串 $str='hello world'; $arr=str_split($str); $arr1=array(); foreach($arr as $v){ $ordv ...