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结合简介的更多相关文章

  1. 廖雪峰Java5集合-3Map-1使用Map

    廖雪峰的视频不全,以下是疯狂Java关于Map的讲解 1.Map定义 Map是一种键值映射表,可以通过key快速查找value,同python的dict.key不允许重复,value可以重复. Map ...

  2. 廖雪峰Java5集合-4Set-1使用Set

    集合 Set用于存储不重复的元素集合: boolean add(E e) boolean remove(Object o) boolean contains(Object o) int size() ...

  3. 廖雪峰Java5集合-6Stack-1使用Stack

    1.栈的定义 栈Stack是一种后进先出(LIFO: Last In First Out)的数据结构,可以看作一端封闭的容器,先进去的元素永远在底部,最后出来. 栈有2个重要的方法: push(E e ...

  4. 廖雪峰Java5集合-3Map-Properties的使用

    Properties用于读取配置 properties文件只能使用ASCII码 #表示注释 可以从文件系统读取.properties文件 Properties props = new Properti ...

  5. 廖雪峰Java5集合-2List-2编写equals方法

    List是一种有序链表: List内部按照放入元素的先后顺序存放 每个元素都可以通过索引确定自己的位置 boolean contains(Object o) 是否包含某个元素 int indexOf( ...

  6. 廖雪峰Java5集合-2List-1使用List

    1.List定义 List是一种有序链表: List内部按照元素的先后顺序存放 每个元素都可以通过索引确定自己的位置 类似数组,但大小可变 //List<E>是一种有序链表: //* Li ...

  7. 廖雪峰Java3异常处理-1错误处理-1Java的异常

    1.计算机运行中的错误 在计算机程序运行的过程中,错误总会出现,不可避免的 用户输入错误 读写文件错误 网络错误.内存耗尽.无法连接打印机不可 String s = "abc"; ...

  8. 廖雪峰Java9正则表达式-1正则表达式入门-1正则表达式简介

    1.使用代码来判断字符串 场景: 判断字符串是否是有效的电话号码:"010-12345678", "123ABC456" 判断字符串是否是有效的电子邮箱地址:& ...

  9. 廖雪峰Java15JDBC编程-1关系数据库基础-1关系数据库简介

    1.数据库 1.1 定义 数据库是按照数据结构来组合.存储和管理数据的软件. 1.2 数据库模型 数据库有层次模型.网状模型.关系模型三种模型. 2 关系数据库 关系数据库是建立在关系模型上的数据库, ...

随机推荐

  1. 自动化-python介绍与基础

    1.1-python的介绍: 简单点来说吧,python这玩意儿是一个叫做Guido van Rossum的程序猿在1989年的圣诞打发时间而决心去开发的一个脚本编程语言.它之前的名字是以abc语言的 ...

  2. map遍历的几种方式和效率问题

    一.map遍历的效率 先创建一个map,添加好数据: Map<String, String> map = new HashMap<>();for (int i = 0; i & ...

  3. 【java多线程】队列系统之LinkedBlockingQueue源码

    转载:https://blog.csdn.net/tonywu1992/article/details/83419448 http://benjaminwhx.com/archives/ 1.简介 上 ...

  4. maven jar 怎么看jdk编译版本

    查看jar包里面MANIFEST.MF文件Build-Jdk的信息 本例中:Build-Jdk:1.7.0_45   解决项目中依赖的jar与jdk冲突.

  5. oracle命令导入SQL脚本

    使用@导入 比如说我在oracle家目录下有a.sql文件 命令行sqlplus / as sysdba,进入后 SQL>@/home/oracle/a.sql; 回车搞定

  6. oracle完全之dbf文件出现问题, ORA-01219

    alter database datafile '/data/app/oradata/ora237/users01.dbf' offline drop; 强制删除该故障文件

  7. centos7如何安装zabbix

    只需要按照第三次修改版本的内容安装就可以了(水平线内的内容),主要是执行两个脚本就可以完成自动化安装了,其他内容是以前写的,仅留下来作为参考 第三次修改:(此次为zabbix4.0版本的,进一步的自动 ...

  8. .NET本质论 实例

    对象和值的比较 CLR的类型系统(其实就是通用类型系统(CTS),它定义了如何在运行库中声明,使用和管理类型,同时也是运行库支持跨语言集成的一个重要组成部分)将对应简单值的类型同对应传统"对 ...

  9. Unity3D用户手册 学习

  10. react 子组件访问父组件的方法

    回调函数(推荐) 地址:https://ourcodeworld.com/articles/read/409/how-to-update-parent-state-from-child-compone ...