集合类学习心得

常用集合的继承关系


Linked 改快读慢

Array 读快改慢

Hash 两都之间

Collection是集合接口

|————Set子接口:无序,不允许重复。

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

区别:Collections是集合类

Set和List对比:

Set:检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变。

List:和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变。

Set和List具体子类:

Set

|————HashSet:以哈希表的形式存放元素,插入删除速度很快。

List

|————ArrayList:动态数组

|————LinkedList:链表、队列、堆栈。

Array和java.util.Vector

Vector是一种老的动态数组,是线程同步的,效率很低,一般不赞成使用。

List接口

常用方法

add(2,obj)表示在索引值为2的位置添加对象obj,并将原来索引值为2的对象及其以后的所有对象向后移一位。注意,索引值从0开始。

set(2,obj)表示将索引值为2的对象的值设为obj,原来的值被舍弃了。

List集合可以包含相同的对象。

实现类

常用实现类有ArrayList和LinkedList。

ArrayList类采用数组结构存储数据,允许所有元素,包括null。优点:根据索引位置对集合进行快速随机访问。缺点:在指定索引位置进行插入或者删除速度较慢。(插入一个需要对其后位置的所有数据都进行操作(后移))

语法格式:List<String> list = newArrayList<String>();

LinkedList类采用链表结构存储数据。优点:插入删除操作的速度较快。缺点:随机访问的速度较慢。(访问一个数据,必须从表头逐个访问到该位置)

语法格式:List<String> list = new LinkedList<String>();

Set接口

常用方法

 

Set集合不允许存储相同的对象,因此可以通过Set集合中的爱的addAll()方法,将Collection集合添加到Set集合中并实现去重。

实现类

常用实现类有:HashSet和TreeSet

HashSet实现了Set接口的hash table(哈希表),依靠HashMap来实现.所以不能有重复的元素,要根据哈希算法计算存储位置。

TreeSet是依靠TreeMap来实现的。TreeSet是一个有序集合,TreeSet中元素将按照升序排列,缺省是按照自然排序进行排列,意味着TreeSet中元素要实现Comparable接口。

在更多情况下,您会使用 HashSet 存储重复自由的集合。考虑到效率,添加到 HashSet 的对象需要采用恰当分配散列码的方式来实现hashCode() 方法。虽然大多数系统类覆盖了 Object 中缺省的hashCode()实现,但创建您自己的要添加到 HashSet 的类时,别忘了覆盖 hashCode()。当您要从集合中以有序的方式抽取元素时,TreeSet 实现会有用处。为了能顺利进行,添加到TreeSet 的元素必须是可排序的。 “集合框架”添加对 Comparable 元素的支持,在排序的“可比较的接口”部分中会详细介绍。我们暂且假定一棵树知道如何保持java.lang 包装程序器类元素的有序状态。一般说来,先把元素添加到 HashSet,再把集合转换为TreeSet 来进行有序遍历会更快。

为优化 HashSet 空间的使用,您可以调优初始容量和负载因子。TreeSet 不包含调优选项,因为树总是平衡的,保证了插入、删除、查询的性能为log(n)。

HashSet 和 TreeSet 都实现 Cloneable 接口。

Map接口

常用方法

Map集合中的元素是通过key,value进行存储的,要获取集合中的key或者value值,可以通过keySet()和values()获取相应的集合,然后通过迭代器遍历相应的集合获取key或者value。

常用方法:HashMap和TreeMap

HashMap 和TreeMap。和所有的具体实现一样,使用哪种实现取决于您的特定需要。在Map 中插入、删除和定位元素,HashMap 是最好的选择。但如果您要按顺序遍历键,那么TreeMap 会更好。根据集合大小,先把元素添加到 HashMap,再把这种映射转换成一个用于有序键遍历的 TreeMap 可能更快。使用HashMap 要求添加的键类明确定义了 hashCode() 实现。有了TreeMap 实现,添加到映射的元素一定是可排序的。

HashMap允许使用<null,null>键值,而TreeMap不能。

HashMap实现快速查找,插入和删除,而TreeMap可以实现集合的对象有序排列。

java集合类学习心得相关推荐

  1. Java EE学习心得

    –Java EE学习心得   1.    称为编程专家的秘诀是: 思考-----编程--------思考------编程--.. 编程不能一步到位,不能一上来就编,必须先思考如何写,怎样写?然后再编程 ...

  2. Java异常学习心得

    2019独角兽企业重金招聘Python工程师标准>>> Java异常学习心得             本文重在Java中异常机制的一些概念.写本文的目的在于方便我很长时间后若是忘了这 ...

  3. java容器doc_关于Java容器类学习心得体会.doc

    关于Java容器类学习心得体会 由于小编对C++比较熟悉所以学习Java应该重点体会Java带来的新概念本文基本上是Java标准库中集合框架的基本概念没有例子写本文的目的在于方便小编很长时间后若是忘了 ...

  4. Java集合类学习总结

    Java集合类学习总结 这篇总结是基于之前博客内容的一个整理和回顾. 这里先简单地总结一下,更多详细内容请参考我的专栏:深入浅出Java核心技术 https://blog.csdn.net/colum ...

  5. JAVA面向对象学习心得

    JAVA面向对象学习心得 ​ Java是面向对象编程的语言,在学习完Java基础语法后,下一个内容就是面向对象的内容了.那么什么是面向对象呢?下面就简单解释一下. 面向过程编程和面向对象编程 ​ 提到 ...

  6. Java集合类学习UML图——ArrayList

    Java集合类学习UML图--ArrayList ArrayList类的定义 public class ArrayList<E> extends AbstractList<E> ...

  7. java hibernate4 学习心得

    一直在学习asp.net mvc但很多都无法理解,同时网上说的架构asp.netmvc+spring.net+nhibernate架构比较牛,但学习了很久总是觉得不明白,而且文档也很少,就转入了mvc ...

  8. 一些关于java的学习心得

    java作为现在最主流的语言之一,所具有的影响力可以说非常之高,接下来本人就来说一下自己的一些学习心得. 首先java作为一门后端语言,其相似性与C#十分相似,运用面积也比C#广泛之多,先来说说jav ...

  9. 实训小结---Java框架学习心得

    学习小结 为期两个星期的实训结束了,在这两周的时间里,我学到了不少之前没有接触过的知识,这也是我第一次正式接触前端后端的开发.在学习开发的过程中,出现过不少问题,自己能够解决的.自己不能解决的都有,下 ...

最新文章

  1. 转载:常用正则表达式大全!(例如:匹配中文、匹配html)
  2. 存储----DAS、SAN、NAS
  3. 华为p40论坛_花粉俱乐部网友:华为P40千万别上双扬声器,小米10方向错了
  4. 怎样才能算是一个好的应用程序?
  5. Jacoco--测试覆盖率工具
  6. (一)容器从入门到深入-容器和镜像
  7. 信息学奥赛一本通 1012:计算多项式的值 | OpenJudge NOI 1.3 07
  8. java applet鼠标点击事件_Swing 鼠标单击事件?
  9. delphi Hi 和 High
  10. word 编辑域中的汉字_Word中根号2、根号3怎么打?
  11. zip压缩工具与tar打包并压缩工具
  12. 本地Navicat连接虚拟机MySQL
  13. MSP430系列教程(一) 开发环境搭建(IAR for MSP430 v7.10.1)
  14. SQL 数据库基础知识点
  15. gaster字体转换器_gautami字体
  16. NS3:FlowMonitor设计讲解
  17. linux 剪贴板_如何在Linux上使用剪贴板管理器
  18. 17、Python特征工程,用相关系数法选择数据特征
  19. Python地理做图——学习笔记
  20. TXT文本的格式问题

热门文章

  1. android支持千兆网络,千兆级 LTE 为你带来快得超乎想象的网速
  2. 下载安装浏览器插件方法
  3. 旅游指南之二----户外活动安全手册
  4. 软件设计师知识点100条(81~100)
  5. SRS 实战 GB28181 流媒体服务解决方案
  6. Video Style Transfer汇总
  7. C语言蓝牙协议栈讲解,蓝牙协议栈记录—BTStack
  8. 软件著作权登记证书怎么申请?
  9. ClassIn下一代在线互动教室平台
  10. 草样年华——北X大的故事理工大风流往事