java基础教程:集合概述(27)
今天要讲的内容是集合。集合是我们编程时非常频繁的对象,必须花费大量时间学习。
我们还是从是什么和为什么两个角度进行引入。
集合是什么?
集合是存储和操作一组对象的对象。类似一个池子,可以存储操作一组元素。
为什么要有集合?
从集合是什么来看,集合和我们之前提到的数组没有差别,都是一组对象的集合。
既然数组就能实现这些功能,为什么还要集合?当然是数组有些功能的限制,达不到我们的需求。
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)相关推荐
- [Java基础]HashSet集合概述和特点
HashSet集合概述和特点: 练习代码如下: package HashSetPackage;import java.util.HashSet;public class HashSetDemo {pu ...
- [Java基础]TreeSet集合概述和特点
练习代码如下: package TreeSetPack;import java.util.TreeSet;public class TreeSetDemo {public static void ma ...
- [Java基础]LinkedHashSet集合概述和特点
练习代码如下: package LinkedHashSetPack;import java.util.LinkedHashSet;public class LinkedHashSetDemo {pub ...
- [Java基础]Set集合概述和特点
练习代码如下: package test21;import java.util.HashSet; import java.util.Set;public class SetDemo {public s ...
- 【零基础学Java】—ArrayList集合概述和基本使用(十四)
[零基础学Java]-ArrayList集合概述和基本使用(十四) 一.什么是ArrayList类以及注意事项 java.util.ArrayList是大小可变的数组的实现,存储在内的数据称为元素,此 ...
- Java基础教程-刘刚-专题视频课程
Java基础教程-2704人已学习 课程介绍 Java基础教程是一套入门Java开发语言的课程,它是由浅入深的介绍Java基础内容,包括Java介绍.基本类型及运算符.控制执行流程.字 ...
- Java基础教程-10-多线程
Java基础教程-10-多线程 1. 多线程 我们在之前,学习的程序在没有跳转语句的前提下,都是由上至下依次执行,那现在想要设计一个程序,边打游戏边听歌,怎么设计? 要解决上述问题,咱们得使用多进程或 ...
- Java基础教程:面向对象编程[2]
Java基础教程:面向对象编程[2] 内容大纲 访问修饰符 四种访问修饰符 Java中,可以使用访问控制符来保护对类.变量.方法和构造方法的访问.Java 支持 4 种不同的访问权限. default ...
- Java基础教程:注解
Java基础教程:注解 本篇文章参考的相关资料链接: 维基百科:https://zh.wikipedia.org/wiki/Java%E6%B3%A8%E8%A7%A3 注解基础与高级应用:http: ...
- java基础教程(一)
Java 开发环境配置 在进行Java开发之前,需要先安装Java开发工具包(JDK)和集成开发环境(IDE).以下是Java开发环境的配置和搭建步骤: 下载JDK:访问Oracle官方网站,选择适合 ...
最新文章
- Spring事务管理 与 SpringAOP
- MIGO相关的3个BADI增强点
- 常用正则表达式,来自新浪微博的js
- mysql严格模式 报错_mysql严格模式
- java 两个字段排序_如何在Java中按两个字段排序?
- 人工智能数学基础-python数值计算实战
- Java Android未捕获异常处理机制
- 问答| 为什么car-like robot运动中存在最小转弯半径?
- 49.字符串转int
- 如何在M1上运行较早的非本机Intel x86应用
- Minitab散点图技巧
- .vbb格式转换为txt格式(matlab实现),在此以Caltech Pedestrian Dataset数据集的annotations为例
- 汽车之家推荐系统排序算法迭代之路
- 基于SMTP协议的E-MAIL电子邮件发送客户端软件C#实现
- favicon自动获取_wordpress网站友情链接页面使用DNSPod自动获取网站favicon图标教程...
- 互联网营销的技巧方法和套路!
- 机器学习数据集(Dataset)汇总
- PuTTY基本使用,Linux基本命令
- Ubuntu磁盘扩充
- 《神经科学:探索脑》学习笔记(第19章 脑的节律)
热门文章
- Linux命令九---Linux进程管理命令---ps-kill-nohup-jobs-fg-bg-top等
- ②C语言,求数组里相同的位置并输出
- 完整记录一则Oracle 11.2.0.4单实例打PSU补丁的过程
- 宝软网java软件下载_手机游戏怎么下载
- 最详细的JavaScript高级教程(十一)正则表达式
- 匿名飞控代码解读汇总
- 打造自己的Android源码学习环境之五:编译Android源代码
- 【读书笔记《Android游戏编程之从零开始》】1.Android 平台简介与环境搭建
- Spring源码下载以及构建技巧
- hfss和python接口_HFSS和MATLAB接口的步骤