廖雪峰Java5集合-1Java集合简介-1Java结合简介
1.集合
定义:集合就是一堆东西。集合里的东西,称为元素Element
数学中的集合:
- 有限集合:
* 一个班所有的学生组成的集合
* 一个网站所有的商品组成的集合 - 无限集合:
* 全体自然数集合
* 奇数集合
2.计算机中引入集合的意义
为了处理一组数据:
- 计算所有同学的总成绩和平均成绩
- 列举所有的商品
- 遍历页面的所有元素
一个Java对象可以在内部持有若干其他Java对象,并对外提供访问接口,我们把这种Java对象称为集合:
- Java的数组可以看作是一种集合,例如:
public class Main {
public static void main(String[] args){
String[] ss = new String[10];//可以持有10个String对象
ss[0] = "Hello";//通过索引放入String对象
String first = ss[0];//通过索引获取String对象
}
}
问:有了数组,为什么还要其他集合类?
数组使用起来不灵活:
- 数组初始化后大小不可变
- 数组只能按索引顺序存取
因为数组不够灵活,就需要其他各种集合类来处理,如
- 可变大小的顺序链表
- 保证无重复元素的集合
- ...等其他情况.
3.Java集合
jdk自带的java.util提供了所有的集合类
- Collection:集合类的根接口
* List:一种有序列表,例如,按索引排列的Student的List
* Set:一种保证没有重复元素的集合,例如所有无重复Student的Set - Map:一种通过Key查找value的映射表集合,同python的dictionary,例如通过name查找对应Student的Map
4.java集合设计的特点:
接口和实现相分离:List接口:ArrayList,LinkedList
支持泛型:List list = new ArrayList<>();
访问集合有统一的方法:迭代器Iterator
5.部分类和接口是遗留,不应该再使用
- 遗留类
* jdk的部分集合类是遗留类,不应该继续使用:
* Hashtable:一种线程安全的Map实现
* Vetor:一种线程安全的List实现
* Stack:给予Vetor实现的LIFO的栈 - 遗留接口:
* Enumeration:已被Iterator取代
6.总结:
- Java的集合类定义在java.util包中
- 常用的集合类包括List,Set,Map等
- Java集合使用统一的Iterator遍历集合
- 尽量不要使用遗留接口
廖雪峰Java5集合-1Java集合简介-1Java结合简介的更多相关文章
- 廖雪峰Java5集合-3Map-1使用Map
廖雪峰的视频不全,以下是疯狂Java关于Map的讲解 1.Map定义 Map是一种键值映射表,可以通过key快速查找value,同python的dict.key不允许重复,value可以重复. Map ...
- 廖雪峰Java5集合-4Set-1使用Set
集合 Set用于存储不重复的元素集合: boolean add(E e) boolean remove(Object o) boolean contains(Object o) int size() ...
- 廖雪峰Java5集合-6Stack-1使用Stack
1.栈的定义 栈Stack是一种后进先出(LIFO: Last In First Out)的数据结构,可以看作一端封闭的容器,先进去的元素永远在底部,最后出来. 栈有2个重要的方法: push(E e ...
- 廖雪峰Java5集合-3Map-Properties的使用
Properties用于读取配置 properties文件只能使用ASCII码 #表示注释 可以从文件系统读取.properties文件 Properties props = new Properti ...
- 廖雪峰Java5集合-2List-2编写equals方法
List是一种有序链表: List内部按照放入元素的先后顺序存放 每个元素都可以通过索引确定自己的位置 boolean contains(Object o) 是否包含某个元素 int indexOf( ...
- 廖雪峰Java5集合-2List-1使用List
1.List定义 List是一种有序链表: List内部按照元素的先后顺序存放 每个元素都可以通过索引确定自己的位置 类似数组,但大小可变 //List<E>是一种有序链表: //* Li ...
- 廖雪峰Java3异常处理-1错误处理-1Java的异常
1.计算机运行中的错误 在计算机程序运行的过程中,错误总会出现,不可避免的 用户输入错误 读写文件错误 网络错误.内存耗尽.无法连接打印机不可 String s = "abc"; ...
- 廖雪峰Java9正则表达式-1正则表达式入门-1正则表达式简介
1.使用代码来判断字符串 场景: 判断字符串是否是有效的电话号码:"010-12345678", "123ABC456" 判断字符串是否是有效的电子邮箱地址:& ...
- 廖雪峰Java15JDBC编程-1关系数据库基础-1关系数据库简介
1.数据库 1.1 定义 数据库是按照数据结构来组合.存储和管理数据的软件. 1.2 数据库模型 数据库有层次模型.网状模型.关系模型三种模型. 2 关系数据库 关系数据库是建立在关系模型上的数据库, ...
随机推荐
- 纯js常用的代码
1.获取表单中某属性的值 var name = document.myform.myname.value; 2.表单提交时校验,相应js代码中需要返回true或者false <form name ...
- 【BZOJ3894】文理分科
最小割劲啊 原题: 文理分科是一件很纠结的事情!(虽然看到这个题目的人肯定都没有纠 结过) 小P所在的班级要进行文理分科.他的班级可以用一个n*m的矩阵进行 描述,每个格子代表一个同学的座位.每位 ...
- zabbix使用自定义key进行监控
我的zabbix-server是安装在另一台虚拟机上的,用来监控下图中的这台虚拟机 先修改zabbix的客户端配置文件,增加UserParameter那行,这里我只是用来测试,所以就随便起了一个名为p ...
- 00centos安装
CentOS6.9及CentOS7.4的安装详细步骤 安装前的准备工作:1 VMware已经安装好2 镜像文件下载好(在这里,我用的是CentOS-6.9-x86_64-bin-DVD1.iso和Ce ...
- DevExpress控件使用方法:第二篇 barManager
标题栏 一.Bars 1. 把BarManager组件添加到窗体中后,会自动创建三个空的 bars: 主菜单(通常位于窗体顶部).顶部工具栏.窗体底部的状态栏. 2. 隐藏左侧的竖线和右边的箭 ...
- js面向对象编程 ---- 系列教程
原 js面向对象编程:数据的缓存 原 js面向对象编程:如何检测对象类型 原 js面向对象编程:if中可以使用那些作为判断条件呢? 原 js面向对象编程:this到底代表什么?第二篇 原 js面向对象 ...
- Python网络_UDP编程
本章将介绍UDP编程,更多内容请参考:Python学习指南 TCP是建立可靠连接,并且通信双方都可以以流的形式发送数据.相对TCP连接,UDP则是面向无连接的协议. 使用UDP协议时,不需要建立连接, ...
- Day 35数据库(Day1)
创建表. create table student( id int not null auto_increment PRIMARY key, name archar(250) not null, ag ...
- Spring Boot 历史
2012年10月,Mike Youngstrom在Spring jira中创建了一个功能需求,要求在Spring框架中支持无容器Web应用程序体系结构.他建议通过main方法引导的Spring容器内配 ...
- [转]SQL UNION 和 UNION ALL 操作符
SQL UNION 操作符 UNION 操作符用于合并两个或多个 SELECT 语句的结果集. 请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列.列也必须拥有相似的数据类型.同时,每 ...