今天要讲的内容是集合。集合是我们编程时非常频繁的对象,必须花费大量时间学习。

我们还是从是什么和为什么两个角度进行引入。


集合是什么?

集合是存储和操作一组对象的对象。类似一个池子,可以存储操作一组元素。

为什么要有集合?

从集合是什么来看,集合和我们之前提到的数组没有差别,都是一组对象的集合。

既然数组就能实现这些功能,为什么还要集合?当然是数组有些功能的限制,达不到我们的需求。

1、数组是定长的。一旦一个数组声明实例化完成后,它的长度是固定的,不能动态的增减。

如果我们的元素个数是不可预知的,那么无法定义一个合适长度的数组来存储。存储之后进行元素的增减时,

也是不能动态的扩容和缩减。

2、数组是一个类型固定的集合。当它声明完成后,只能存储声明类型的对象。如int[],User[]。

并且只能单个对象线性存储,如{1,2,3,4}。当我们希望能够存储一些键值对时,无法满足需求。

如{username:"张三", sex:"男"}。

3、数组的排序是复杂的,需要自己规划算法进行排序。但是,大多数的排序都是相似的,

我们希望能够有一种快捷的方式能够排序元素。

4、数组的元素增删改查代码复杂,完全可以提供公共的实现方案。

基于以上但不仅限于以上的原因,便出现了集合。集合就是解决以上问题的。

集合的概述

集合是java当中存储一组对象的复合对象。集合在java当中的设计结构如下(图片来自其他博客):

从上图可以看出,java的集合设计始于两个接口collection 和 map

collection下的元素是单列元素,如[1,2,3],每一个单位是一个对象。

map下的对象是键值对双列元素,如{username:aa, sex:man,  age:23},每一个单位是两个对象,一个键,一个值。

然后collection下,又派生了List,set,queue三个接口,分别表示列表,集,队列

列表是一组有序的、可重复的元素集合,元素按顺序排列。有实现类LinkedList(链表列表集合),ArrayList(数组列表集合),Vector(向量数组列表,线程安全)

集是一组无序的,不可重复的元素集合。有实现类HashSet(哈希集),TreeSet(树形集),LinkedHashSet(链表哈希集)。

单向队列是一组有序的,先进先出的元素集合。也就是说先进入集合的元素先被取出,后进入的元素后被取出,元素只能从队列头部被取出。

还有一个继承单向队列的接口Deque,双向队列,也是一组有序的元素集合,元素可以从队列的头部或尾部被取出

LinkedList就是实现了Deque的类。所以,LinkedList可以从列表头部或尾部取出元素。

还有我们碰到的栈,先进后出的模型,也可以使用Deque实现。从双向队列的尾部取元素即可。

后面的几个章节我们就一些常见集合进行详细的介绍。

集合和String应该是java当中使用最频繁的两种对象。大家一定要学会,熟练使用。

有精力能力的,可以详细研究下集合的实现。

java基础教程:集合概述(27)相关推荐

  1. [Java基础]HashSet集合概述和特点

    HashSet集合概述和特点: 练习代码如下: package HashSetPackage;import java.util.HashSet;public class HashSetDemo {pu ...

  2. [Java基础]TreeSet集合概述和特点

    练习代码如下: package TreeSetPack;import java.util.TreeSet;public class TreeSetDemo {public static void ma ...

  3. [Java基础]LinkedHashSet集合概述和特点

    练习代码如下: package LinkedHashSetPack;import java.util.LinkedHashSet;public class LinkedHashSetDemo {pub ...

  4. [Java基础]Set集合概述和特点

    练习代码如下: package test21;import java.util.HashSet; import java.util.Set;public class SetDemo {public s ...

  5. 【零基础学Java】—ArrayList集合概述和基本使用(十四)

    [零基础学Java]-ArrayList集合概述和基本使用(十四) 一.什么是ArrayList类以及注意事项 java.util.ArrayList是大小可变的数组的实现,存储在内的数据称为元素,此 ...

  6. Java基础教程-刘刚-专题视频课程

    Java基础教程-2704人已学习 课程介绍         Java基础教程是一套入门Java开发语言的课程,它是由浅入深的介绍Java基础内容,包括Java介绍.基本类型及运算符.控制执行流程.字 ...

  7. Java基础教程-10-多线程

    Java基础教程-10-多线程 1. 多线程 我们在之前,学习的程序在没有跳转语句的前提下,都是由上至下依次执行,那现在想要设计一个程序,边打游戏边听歌,怎么设计? 要解决上述问题,咱们得使用多进程或 ...

  8. Java基础教程:面向对象编程[2]

    Java基础教程:面向对象编程[2] 内容大纲 访问修饰符 四种访问修饰符 Java中,可以使用访问控制符来保护对类.变量.方法和构造方法的访问.Java 支持 4 种不同的访问权限. default ...

  9. Java基础教程:注解

    Java基础教程:注解 本篇文章参考的相关资料链接: 维基百科:https://zh.wikipedia.org/wiki/Java%E6%B3%A8%E8%A7%A3 注解基础与高级应用:http: ...

  10. java基础教程(一)

    Java 开发环境配置 在进行Java开发之前,需要先安装Java开发工具包(JDK)和集成开发环境(IDE).以下是Java开发环境的配置和搭建步骤: 下载JDK:访问Oracle官方网站,选择适合 ...

最新文章

  1. Spring事务管理 与 SpringAOP
  2. MIGO相关的3个BADI增强点
  3. 常用正则表达式,来自新浪微博的js
  4. mysql严格模式 报错_mysql严格模式
  5. java 两个字段排序_如何在Java中按两个字段排序?
  6. 人工智能数学基础-python数值计算实战
  7. Java Android未捕获异常处理机制
  8. 问答| 为什么car-like robot运动中存在最小转弯半径?
  9. 49.字符串转int
  10. 如何在M1上运行较早的非本机Intel x86应用
  11. Minitab散点图技巧
  12. .vbb格式转换为txt格式(matlab实现),在此以Caltech Pedestrian Dataset数据集的annotations为例
  13. 汽车之家推荐系统排序算法迭代之路
  14. 基于SMTP协议的E-MAIL电子邮件发送客户端软件C#实现
  15. favicon自动获取_wordpress网站友情链接页面使用DNSPod自动获取网站favicon图标教程...
  16. 互联网营销的技巧方法和套路!
  17. 机器学习数据集(Dataset)汇总
  18. PuTTY基本使用,Linux基本命令
  19. Ubuntu磁盘扩充
  20. 《神经科学:探索脑》学习笔记(第19章 脑的节律)

热门文章

  1. Linux命令九---Linux进程管理命令---ps-kill-nohup-jobs-fg-bg-top等
  2. ②C语言,求数组里相同的位置并输出
  3. 完整记录一则Oracle 11.2.0.4单实例打PSU补丁的过程
  4. 宝软网java软件下载_手机游戏怎么下载
  5. 最详细的JavaScript高级教程(十一)正则表达式
  6. 匿名飞控代码解读汇总
  7. 打造自己的Android源码学习环境之五:编译Android源代码
  8. 【读书笔记《Android游戏编程之从零开始》】1.Android 平台简介与环境搭建
  9. Spring源码下载以及构建技巧
  10. hfss和python接口_HFSS和MATLAB接口的步骤