------- android培训、java培训、期待与您交流! ----------
1.集合概述
专业的存储对象的容器.
具备增,删,查,改元素的操作.
集合的优点:
可以存储任意类型的元素(暂时的优点)
可以存储任意多个元素. 相对于传统的数据,集合更加的优秀.
2.集合体系之Collection
|---Collection(接口)
集合的顶层接口, 定义了集合的基本的规范.
定义方法, 规范了集合的行为.
增加:
boolean add(Object e)
一次添加一个元素
boolean addAll(Collection c)
批量添加,将c 集合中的所有元素添加到指定集合中.
删除:
void clear()
清空集合
boolean remove(Object o)
删除一个元素
boolean removeAll(Collection c)
批量删除, 将指定集合中包含c 集合中的所有元素删除.
查找:
int size()
获取集合的大小,元素的个数
isEmpty()
检测集合是否为空. 集合中没有元素了...
boolean contains(Object o)
检测集合中是否包含指定的元素.
boolean containsAll(Collection c)
检测集合中是否完全包含c 中的元素.
修改:
boolean retainAll(Collection c)
修改集合, 紧保留集合和c 中相同的元素.
取交集.
其他:
Object[] toArray()
集合转数组.
3. 集合体系之List(列表)
|---Collection(接口)
|---List (接口)
List 继承继承了Collection 接口.
List 是Collection 的子类. List 更强的,具备更多个方法...
找出List 集合中特有的方法:
List 就是依靠这些特殊的方法,实现自己的特性的...
增
void add(int index, Object element)
boolean addAll(int index, Collection c)
删
remove(int index)
查
get(int index)
int indexOf(Object o)
int lastIndexOf(Object o)
改
Object set(int index, Object element)
subList(int fromIndex, int toIndex)
List 集合的特有方法都是和角标有关的.
List 特点:
元素有序(存储有顺序,按照添加是的顺序存储),存储在List 集合中的元素都有角标. 元素可以重复.
元素有序,元素有角标,元素可以重复.
并测试...
4. 集合体系之ArrayList
学习集合的实现类,学习什么?
研究实现类的实现原理... 看源码...
基于该原理实现的实现类具备什么特点?
|---Collection(接口)
|---List (接口)
List 继承继承了Collection 接口.
特点: 角标,元素有序,元素可重复.
|---ArrayList(实现类)
一个类实现一个接口,要把接口中的所有方法(公共抽象的)都重写了
如果想要了解集合的实现的原理的,就需要集合的实现类.
特点: 底层是数组实现, 数组是一块连续的内存,通过角标可以实现快速的定位,查找很快.
但是增加和删除元素时,很慢, 元素的移动(增加和删除),和数组的扩容(增加元素,数组空间不足)
底层的数组的扩容,是以1.5倍扩容的...
总结: 查找快,增删慢.
在实际开发中,最为常见的一个集合...
|---LinkedList
|---Vector
|---Stack
练习题:
集合List
元素有角标,有序,元素可以重复.
既然元素可以重复, 编写程序去除ArrayList集合中存储的重复元素.
1. 元素是字符串对象.
2. 元素是自定义的对象.
ArrayList 集合:
contains方法底层使用元素的equals方法
以使用contains 检测集合中是否包含指定的元素.
但是如果元素是自定义对象话, contains 底层使用的元素的equals 方法进行检测的. 如果自定义对象没有重写equals, contains 方法不能正常工作了.
注意: 集合的equals 和元素的equals 是不同概念....
集合的equals 是比较集合是否相同.
元素(Car, String,)的equals
5. 集合之LinkedList
|---Collection(接口)
定义了集合体系的基本的规范
|---List(子接口)
特点: 元素有角标,元素有序的,元素可以重复.
|---ArrayList(实现类)
特点: 数组实现,查找快(内存地址连续,通过角标可以快速定位)
增删慢(元素的移动,数组的扩容)
|---LinkedList(实现类)
特点: 双向链表实现. 集合的每增加一个元素,创建出一个节点(Node)对象保存一个元素.
上一个节点会记录下一个节点的引用. 由于双向链表,下一个节点也会记录上一个节点的.
节点和节点的内存地址不连续, 查找很慢,增删快了...
注意: LinkedList 和数组没有任何关系.
特有方法:
由于双向的链表列表: 该集合操作集合的头和尾都很方便的...
addFirst
addLast
getFirst
getLast
removeFirst
removeLast
栈:
stack
先进后出,后进先出...
压栈
push()
弹栈.
pop()
队列
queue
先进先出.
拍对, 银行排号.
排队:
offer()
出队
poll
6.集合体系值Vector
缺陷:
JDK1.0 出现的.
具备自己特有方法,但是方法名太长.
底层也是数组实现, 数组在扩容是100% 扩容, 消耗内存..
该集合是同步(集合的方法都是同步方法),在单线程在操作新低.
解决:
JDK1.2 Java 设计了集合体系. Collection. 并设计出了ArrayList .
Vector 就被ArrayList 替代了.
ArrayList 有点:
方法名短.
虽然也是数组实现,但是扩容不再是100%
集合被设计为非不同的. 不再使用同步方法了. -> 提高性能.
注意: 如果ArrayList 遇到了多线程安全问题:
可以使用Collections.synchronizedList(List list); 将不同步的ArrayList 转换为同步的集合.
相关推荐
day01_Object类、常用API day02_Collection、泛型 day03_List、Set、数据结构、Collections day04_Map,斗地主案例 day05_异常,线程 day06_线程、同步 day07_等待与唤醒案例、线程池、Lambda表达式 ...
集合—黑马程序员Java学习笔记
黑马程序员java培训就业班笔记:day16(集合框架基础总结)
。。。
•特征1:是一堆代码的集合; •特征2:一个半成品的应用; •特征3:包含了一些优秀的设计模式; 定义:框架是一堆包含了常量、方法和类等代码的集合,它是一个半成品的应用,只包含了一些项目开发的时候所使用的...
java面试笔试资料java笔试题大集合及答案题库java笔试题汇总资料188个合集 100家大公司java笔试题汇总.doc 125条常见的java 面试笔试题大汇总.pdf 2011最新整理java经典代码.doc ...黑马程序员入学Java精华总结.pdf
Java基础笔记分为 Java基础篇 和 Java加强篇 Java基础篇包括: 1. Java环境搭建、Java快速入门、IDEA开发工具 2. Java基础语法、类型转换、运算符、Scanner 3. 分支结构、循环结构、随机数 4. 数组详解、Debug工具...
java面试笔试题库java学习比较开发教程互联网公司面试资料大全合集: 100家大公司java笔试题汇总.doc 125条常见的java 面试笔试题大汇总.pdf 2011最新整理java经典代码.doc ...黑马程序员入学Java精华总结.pdf
java面试笔试题库java软件设计java笔试题大集合及答案文档资料合集300MB“ 100家大公司java笔试题汇总.doc 125条常见的java 面试笔试题大汇总.pdf 2011最新整理java经典代码.doc ...黑马程序员入学Java精华总结.pdf
给大家分享一篇我在学习java过程中的关于java核心知识点整理部分的笔记,比较详细,内容也比较多。包含常见的面试题:JVM、Java集合、多线程并发、java基础、SSM框架原理、微服务、Netty和RPC、网络、日志、算法、...