前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java 基础 | Collection 集合概览

Java 基础 | Collection 集合概览

作者头像
JavaFish
发布2019-10-17 14:37:14
4210
发布2019-10-17 14:37:14
举报

老读者都知道,我是自学转行到 java 的。那时迫于生存压力,学得比较快,很多知识点仅停留在会用的层面。最近,光会用不知道原理,没什么意思。每次使用时都是机械性的 "熟练使用"。加之一直有回归基础的想法,所以想在业余时间复盘 java 的基础知识。知其然知其所以然是技术人的追求。

说到复盘基础,并不是所有的都会复盘,没那个时间更没那个必要。比如,一些基础的语法以及条件语句,极度简单。这类是不需要复盘的。思前想后,我觉得整个计划应该从集合开始,而复盘的方式就是读源码。这篇先简单介绍下集合的整体概览,之后会具体到集合里面每个实现类的源码解析。

1、Java 为什么要有集合?

首先,java 是一门面向对象语言,操作对象是我们的日常。既然操作就需要有东西把对象存储起来。于是容器就应运而生,初学者接触到的第一个容器就是数组,但这远远不够,根据不同的对象以及不同的业务,我们需要用到不同的容器。比如,不想要重复对象,我们就会想到用 set 容器,想要对象有序我们会用 List 。不管是 List、Set。他们都会有共性, 而 java 就根据这些共性,给我们提供了 Collection 集合。

2、Collection 接口框架图

由上面的 Collection 接口框架图,我们可以知道 Collection 是 List、Set、Queue 的父接口,看到这里,你们可能会问,Map 哪去了?其实,Java 中的容器,包括 Collection 和 Map ,Map 是另外一个体系,所以我们今天先不讲 Map 。

3、Collection 的方法

Collection 接口定义了以上待实现的方法。比如:

  • size() 计算容器长度
  • isEmpty() 是否为空
  • contains() 是否包含某个对象
  • containsAll() 是否包含另一个集合的所有对象
  • iterator() 上层接口 iterable 的方法,用于生成迭代对象,遍历对象
  • add() 添加一个对象
  • add() 添加另一个集合的所有对象
  • remove() 移除一个对象
  • removeAll() 移除所有对象
  • toArray() 把集合转换成数组
  • retainAll() 是否与另一个集合有交集

4、List 子接口

List 集合的特点是元素有序、可重复,它包含了 ArrayList、Vendor 和 LinkedList 这三个实现类。三者比较如下:

ArrayList

Vendor

LinkedList

线程安全

底层实现

数组

数组

链表

性能

查询快,增删慢

最慢

增删快、查询慢

5、Set 子接口

Set 集合最大的特点是不允许重复元素,它有 HashSet、TreeSet、LinkedHashSet 、EnumSet 四个实现类,对比如下:

HashSet

TreeSet

LinkedHashSet

底层实现

哈希表(一个元素为链表的数组)

红黑树(一个自平衡的二叉树)

哈希表和链表

元素是否为null

线程安全

至于EnumSet 类,我还没研究过怎么使用,在网上查了下,它是专为枚举类设计的集合类,EnumSet 中的所有元素都必须是指定枚举类型的枚举值,具体的这里先不做介绍,待我研究下用法以及场景,再专门介绍。

6、Queue 子接口

Queue 用的不多,它常用于模拟队列这种数据结构,实现 FIFO 等数据结构。通常,队列不允许随机访问队列中的元素。在工作中,我还没有使用过,待我研究过,再来跟大家分享。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一个优秀的废人 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档