之前有一篇笔记,讲的是集合和泛型,这几天看Java集合中几个接口的文档,思绪非常混乱,直到看到Oracle的“The Collections Framwork”的页面,条理才清晰些,现在进行整理。

  一、为什么需要集合?

  应用程序中经常需要创建很多的对象来完成一定的工作,所以我们需要将这些一定数目的对象组织起来进行统一管理。

  对象数组能够满足我们,如果对象的数目是清晰有限且生命周期可知,那么使用对象数组来进行管理是非常简单和直观的。

  数组一旦创建,它的容量便固定了,在它的生命周期里再也无法被改变。但是程序总是在运行时才根据某些条件去创建新对象,在此之前,我们无法预知所需对象的数量,甚至会不知道确切的类型。那么如何在任意时刻管理任意数量的对象呢?集合便为此诞生了。

  ps:这两种组织和管理对象的方式分别为“array-based”、“collection-based”,在下面提到的集合接口中,有一个方法叫做“toArray()”,被称为两种方式间的桥梁。

  二、The Collections Framwork

  Java集合框架到底包含了什么,根据它的API规范做一个总结。

  1、Collection interfaces,即集合接口。

  实现这些接口是我们使用集合的主要方式。它有两个根接口,Collection和Map。

  至于接口的层次结构,这里不再赘述

  2、 implementations,即接口实现类

  是对集合接口的各种实现。

  可以看到API规范中列举了多种类型的实现类,其中最基础也最重要的是General-purpose implementations,即通用实现类,里面包含了我们常用的一些数据结构。下表就是常用的接口和它们的常用的实现类:

  

  至于其他的那些 implementations,等有需要了再看,知道实现类种类很多就行。

  

  3、Algorithms ,算法

  提供了一些基本的算法实现。

  这些算法的静态方法都在一个名叫“Collections”的类中(java.util.Collections)。

  4、Infrastructure,基础设施

  这个在我看的书本上并没有提,看它的类型就很清楚它的作用了。它里面有4种“基础设施”:

  • Iterators:Iterator、Listiterator
  • Ordering:Comparable、Comparator
  • Runtime exceptions:(两个类)UnsupportedOperationException 、ConcurrentModificationException
  • Performance:RandomAccess

  5、Array Utilities

  里面就包含了Arrays类(java.util.Arrays),因为需要用到很多其中的静态方法!

  附一张书本上的“集合框架全景图”:·

Java集合框架中的元素的更多相关文章

  1. 第49节:Java集合框架中底层文档的List与Set

    Java集合框架中的List与Set // 简书作者:达叔小生 Collection -> Set 无序不重复 -> 无序HashSet,需要排序TreeSet -> List 有序 ...

  2. Java集合框架中的快速失败(fail—fast)机制

      fail-fast机制,即快速失败机制,是java集合框架中的一种错误检测机制.多线程下用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了修改(增加.删除),则会抛出Concurre ...

  3. Java集合框架中底层文档的List与Set

    Java集合框架中的List与Set // 简书作者:达叔小生 Collection -> Set 无序不重复 -> 无序HashSet,需要排序TreeSet -> List 有序 ...

  4. Java集合框架中Map接口的使用

    在我们常用的Java集合框架接口中,除了前面说过的Collection接口以及他的根接口List接口和Set接口的使用,Map接口也是一个经常使用的接口,和Collection接口不同,Map接口并不 ...

  5. Java集合框架中List接口的简单使用

    Java集合框架可以简单的理解为一种放置对象的容器,和数学中的集合概念类似,Java中的集合可以存放一系列对象的引用,也可以看做是数组的提升,Java集合类是一种工具类,只有相同类型的对象引用才可以放 ...

  6. Java中的函数式编程(五)Java集合框架中的高阶函数

    写在前面 随着Java 8引入了函数式接口和lambda表达式,Java 8中的集合框架(Java Collections Framework, JCF)也增加相应的接口以适应函数式编程.   本文的 ...

  7. java集合框架中contains(),containsKey()和containsValue()的用法:

    List集合的contains()方法用于判断集合中包不包含某个元素,返回值是boolean. Map集合的containsKey()和containsValue()方法和上面的相同. 示例: pub ...

  8. java集合框架中Set和List的区别

    1. Set 接口实例存储的是无序的,不重复的数据.List 接口实例存储的是有序的,可以重复的元素. 2. Set检索效率低下,删除和插入效率高,插入和删除不会引起元素位置改变 <实现类有Ha ...

  9. java集合框架中的去重问题

    对于自定义的类来说,必须要重写hashcode和equals方法 hashcode方法的作用是确定元素在数据结构中的位置,当两个元素的hash值一样时,需要用equals方法判断两个元素是否是一样的, ...

随机推荐

  1. python-日常用法小记

    1.判断是否是数字 math.isnan("a") 2.数学math math.log(x) 3.查看安装路径 import sys print sys.path 4.字符串与日期 ...

  2. tp5 get传参为中文时,需要解码 urldecode

    php 接收 $data = urldecode($data);

  3. 重入锁 ReentrantLock (转)(学习记录)

    重入锁(ReentrantLock)是一种递归无阻塞的同步机制.以前一直认为它是synchronized的简单替代,而且实现机制也不相差太远.不过最近实践过程中发现它们之间还是有着天壤之别. 以下是官 ...

  4. 四、使用jsonpath-JSON Extractor提取复杂响应中的数组及其他字段

    一.jsonpath实时调试url http://jsonpath.com/ 二.对于复杂响应的提取字段 1.json字符串如下: { "code": 0, "data& ...

  5. C#产生随机验证码的代码

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  6. LC 245. Shortest Word Distance III 【lock, medium】

    Given a list of words and two words word1 and word2, return the shortest distance between these two ...

  7. vue 登录页面填坑

    上边的导航头,会显示在登陆页面上,暂时的解决办法实: <template> <div style="position: fixed; top:0px; left:0px;h ...

  8. Carousel 走马灯

    在有限空间内,循环播放同一类型的图片.文字等内容 基础用法 适用广泛的基础用法 结合使用el-carousel和el-carousel-item标签就得到了一个走马灯.幻灯片的内容是任意的,需要放在e ...

  9. Java模拟实现百度文档在线浏览

    Java模拟实现百度文档在线浏览 这个思路是我参考网上而来,代码是我实现. 采用Apache下面的OpenOffice将资源文件转化为pdf文件,然后将pdf文件转化为swf文件,用FlexPaper ...

  10. linux下mysql定时备份,数据保存周期一周

    以下脚本来自网络,版权归原作者所有(推荐放在夜间自动备份,用cron制定计划任务) crontab -e 0 3 * * * /var/erp/data/mysql_backup.sh #!/bin/ ...