Java集合--概述

摘要

​ 本文主要介绍集合的整体概念,并作为接下来Java集合实现类讲解的索引。

图示

​ 这是在网上看到了这样一张图,感觉很清晰,内容也很全面,我决定按这张图,把自己熟悉的集合都仔细研究一下。

查看大图

各位置描述

位置 描述
左上灰色部分 已经过期,以后的开发中不要使用。
右上浅粉色部分 接口关系图
中间绿色部分 java.util包里集合具体实现类
右下灰色部分 java.util.concurrent包里面的类,用来处理java并发问题

集合分类

分类 描述
Map 双链集合,允许通过键来找到值
List 按照插入顺序保存元素
Set 不允许有重复元素
Queue 从一端插入元素,从另一端获取

实现类

接口 实现类
List ArrayList、LinkedList
Set HashSet、LinkedHashSet、TreeSet
Queue PriorityQueue、LinkedList
Map HashMap、LinkedHashMap、TreeMap、WeakHashMap、IdentityHashMap

底层数据结构

底层数据结构 实现类
数组 EnumMap、ArrayList、ArrayQueue
链表 LinkedHashSet、LinkedList、LinkedHashMap
红黑树 TreeMap、TreeSet
二叉堆 PriorityQueue
哈希表 HashMap、HashSet、LinkedHashMap、LinkedHashSet、WeakHashMap、IdentityHashMap

正文

一、集合的由来

​ 如果一个程序只包含固定数量且生命周期都是已知的对象,那么这是一个非常简单的程序

​ 为了满足常规的编程需要,我们要求能在任何时候,任何地点创建任意数量,甚至是不同类型的对象,由于数组只能装统一类型数据,而且长度固定,于是产生了集合。

二、集合特点
  • 集合只能存放对象。基本数据类型会自动装箱为包装类。
  • 集合存放的是对象的引用,对象本身还是放在堆内存中。
  • 集合可以存放不同类型,不限数量的数据类型。
三、迭代器

​ 使用集合必须对具体实现类进行操作,但是考虑如下状况:如果原本是对List进行编程,现在要把相同的代码用在Set上,如果能不关心容器类型只关心对集合得操作该怎么办?于是,迭代器因此产生。

​ 迭代器是一个对象,它的工作就是遍历并选择序列中的对象,而且客户端不需要关注序列的底层结构,Java中Iterator只能单向移动,但是其子接口ListIterator可以双向移动。

​ Iterator中有hashNext(),next(),remove()几个方法,ListIterator在它的基础上又添加了三种方法,分别是 add(),previous(),hasPrevious()

​ Collection顶层结构接口是Iterable,而Map的顶层接口是Map,Collection下的集合都可以用迭代器遍历,Map可以使用Set<Map.Entry<K, V>> entrySet()方法转换为Set进行迭代遍历。

​ Iterable中包含Iterator<T> iterator()方法,Collection下集合使用该方法后会返回迭代器,可对迭代器进行迭代遍历。

​ 通常来讲有序的集合中有Iterator<T> iterator()ListIterator<E> listIterator()方法,可以进行双向遍历,无序的集合中有Iterator<T> iterator(),只能向后遍历。

四、实现自己的集合

​ 如果想实现自己的集合可以JDK提供的抽象类,如AbstractList,AbstractMap,通常这些抽象类已经为我们提供了现成的实现,可以根据需要对特定的抽象方法重写,直接实现List、Map这样的接口是需要实现所有方法工作量过大。

​ 不过通常来讲,java已经提供提供了丰富的集合实现,很少会需要我们自己去实现集合。


本文参考:

  1. Think in Java 第四版 第8章 集合部分
  2. Java 集合详解
  3. 一张图让你看清Java集合类(Java集合类的总结)

Java集合--概述的更多相关文章

  1. 《java集合概述》

    JAVA集合概述: Collection: |---List有序的:通过索引就可以精确的操作集合中的元素.元素是可以重复的. List提供了增删改查的动作. 增加add(element) add(in ...

  2. Java集合概述、Set集合(HashSet类、LinkedHashSet类、TreeSet类、EnumSet类)

    Java集合概述.Set集合(HashSet类.LinkedHashSet类.TreeSet类.EnumSet类) 1.Java集合概述1)数组可以保存多个对象,但数组长度不可变,一旦在初始化数组时指 ...

  3. Java笔记:Java集合概述和Set集合

    本文主要是Java集合的概述和Set集合 1.Java集合概述 1)数组可以保存多个对象,但数组长度不可变,一旦在初始化数组时指定了数组长度,这个数组长度就是不可变的,如果需要保存数量变化的数据,数组 ...

  4. 第8章-Java集合 --- 概述

    第8章-Java集合 --- 概述 (1)Java集合类是一种特别有用的工具类,可以用于存储数量不等的多个对象,并可以实现常用的数据结构,如 栈.队列等. (2)Java集合大致可分为Set.List ...

  5. Java集合----概述、Collection接口、Iterator接口

    Java 集合概述 Java 集合就像一种容器,可以把多个对象的引用放入容器中. Java 集合类可以用于存储数量不等的多个对象,还可用于保存具有映射关系的关联数组 Java 集合可分为 Set.Li ...

  6. Java集合——概述

    Java集合——概述 摘要:本文主要介绍了几种集合类型以及有关的一些知识点. 集合类图 类图 类图说明 所有集合类都位于java.util包下.Java的集合类主要由两个接口派生而出:Collecti ...

  7. Java集合概述(上)

    Java集合概述(上) 前言 先说说,为什么要写这么一篇博客(我总是喜欢写原因).因为最近到年底了,正好又要准备面试,所以在做各方面的技术总结.而Java集合是Java非常重要的一部分,自己前前后后也 ...

  8. 1.Java集合总结系列:Java集合概述

    一.概述 集合是 Java 中非常重要的 API,在实际应用中非常广泛,在许多面试中也是必考的知识点. Java 所有集合类都位于 java.util 包下,Java 的集合只能保存对象,而无法保存保 ...

  9. Java集合(一):Java集合概述

    注:本文基于JDK 1.7 1 概述 Java提供了一个丰富的集合框架,这个集合框架包括了很多接口.虚拟类和实现类. 这些接口和类提供了丰富的功能.可以满足主要的聚合需求. 下图就是这个框架的总体结构 ...

随机推荐

  1. 《Python黑帽子:黑客与渗透测试编程之道》 网络基础

    TCP客户端: 示例中socket对象有两个参数,AF_INET参数表明使用IPv4地址或主机名 SOCK_STREAM参数表示是一个TCP客户端.访问的URL是百度. #coding=utf-8 i ...

  2. 什么是Ajax?Ajax的原理是什么?Ajax的核心技术是什么?Ajax的优缺点是什么?

    Ajax是一种无需重新加载整个网页,能够更新部分网页的技术.Asynchronous JavaScript and XML的缩写,是JavaScript.XML.CSS.DOM等多个技术的组合. Aj ...

  3. Chrome谷歌浏览器已停用不支持的扩展程序解决方法

    在不能上外网的情况下解决该问题: http://www.liu16.com/post/Chrome_2447.html

  4. Jmeter监控系统等资源,ServerAgent端口的本次启动端口修改

    默认情况下在下载的ServerAgent下,如果服务是windows系统,则直接启动"startAgent.bat"即可,如果是Linux系统,则直接启动"./start ...

  5. HTML编码规范 - 1

    用两个空格来代替制表符(tab) -- 这是唯一能保证在所有环境下获得一致展现的方法. 嵌套元素应当缩进一次(即两个空格). 对于属性的定义,确保全部使用双引号,绝不要使用单引号. 不要在自闭和(se ...

  6. notepad++中设置python运行

    1. Notepad++ ->"运行"菜单->"运行"按钮 2. 在弹出的窗口内输入以下命令: cmd /k python "$(FULL ...

  7. android 判断service是否正在运行

    public static boolean isServiceExisted(Context context, String className) { ActivityManager activity ...

  8. Android 开发工具类 10_Toast 统一管理类

    Toast 统一管理类: 1.短时间显示Toast: 2.长时间显示 Toast: 3.自定义显示 Toast 时间. import android.content.Context; import a ...

  9. 计算机上面常用的计算单位 & 个人计算机架构与接口设备

    不多说,直接上干货! 计算机上面常用的计算单位 容量单位  速度单位  此网络常使用的单位为 Mbps 是 Mbits per second,亦即是每秒多少 Mbit. 个人计算机架构与接口设备 整个 ...

  10. PCI配置空间简介

    一.PCI配置空间简介 PCI有三个相互独立的物理地址空间:设备存储器地址空间.I/O地址空间和配置空间.配置空间是PCI所特有的一个物理空间.由于PCI支持设备即插即用,所以PCI设备不占用固定的内 ...