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. nodejs项目在webstorm里进行debug的设定

    菜单 > Run > Edit Configurations... 菜单 > Run > Debug... 菜单 > Run > Edit Configuratio ...

  2. Lab_1_SysOps_Compute_Linux_v2.5

    System Operations - Lab 1: Creating Elastic Compute Cloud (Amazon EC2) Instances (Linux) - 2.5 ===== ...

  3. Win7 远程桌面 错误代码:5 异常处理(您的远程桌面会话即将结束 此计算机的虚拟内存可能不足。请关闭其他程序,然后重试连接远程计算机。如果问题仍然存在,请联系网络管理员或技术支持。)

    问题表现: 在用windows7 远程桌面连接其他电脑时,出现错误提示对话框—-标题为“严重错误(错误代码:5)”,内容为“您的远程桌面会话即将结束 此计算机的虚拟内存可能不足.请关闭其他程序,然后重 ...

  4. codeforces 356 C. Compartments 构造 贪心

    一辆车,有n个车厢,每个车厢刚好有4个人 车上有n个学生,第i个车厢有a[i]个学生 如果一个车厢里面的学生数 <= 2,这个车厢里的学生会不开心 如果一个车厢里面的学生数 > 2,这个车 ...

  5. mac下配置openfire

    下载 在浏览器中打开如下网址http://www.igniterealtime.org/downloads/index.jsp,根据你的操作系统选择对应的版本进行下载,这里我是在mac下配置的,所以选 ...

  6. weblogic 优化设置 http://wenku.baidu.com/view/c42e7a5bbe23482fb4da4cf2.html

    引自:http://wenku.baidu.com/view/c42e7a5bbe23482fb4da4cf2.html

  7. ACM好书推荐

    年末感想之(渣渣的我)         仔细想想,搞比赛的日子4年有余了,确实不服老不行了,直到现在平均每天的题量都在3题左右.其实真想说,“渣渣的我”.做的题确实不少了,但是水平还是上不了档次.  ...

  8. VR全景智慧城市-720全景项目行业应用

    VR虚拟现实.VR全景概念已成为科技发展热议的焦点.在这样的市场大环境下,全景智慧城市做为一家对大众创新万众创业和用户体验为理念的VR全景城市化信息搜素平台平地而生成为的VR行业领跑者,致力VR全景V ...

  9. TableView使用CATransform3D特效动画

    效果一: 在代理方法中实现: - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell fo ...

  10. sqlserver同步后在不重新初始化快照的情况下新增表

           在已有事务复制中,时长需要新增表.索引,这些变更时不会同步到从库中.如果采用默认的设置,每次都需要重新初始化快照,从库重新应用快照和未执行的同步命令,这显然是无法在线上实践的方法.另一种 ...