1.对象数组
1.1 数据既可以存储基本数据类型,也可以存储引用类型。它存储引用类型的时候数组就叫对象数组
1.2 容器
数组:长度固定
字符缓冲区:始终返回是一个字符串(StringBuffer)
1.3 集合和数组的区别
长度:数组固定,集合可变
内容:数组可以是基本类型,也可以是引用类型;集合只能是引用类型
元素内容:数组只能存储同一种类型,集合可以存储不同类型(一般都存储同一种类型)
2. 集合框架体系图
由于需求不同,Java就提供了不同的集合类。这多个集合类的数据结构不同,但是它们都是要提供存储和遍历功能的。
Collection
|--List
|--ArrayList
|--Vector
|--LinkedList
|--Set
|--HashSet
|--TreeSet
2.1 集合的功能(添加、删除、判断、获取、长度、交集、转换)
2.1.1 添加功能:
boolean add(Object object) //添加一个元素
Boolean addAll(Collection c)//添加一个集合中的元素
2.1.2 删除功能
boolean remove(Object o) //删除指定元素
boolean removeAll(Collection c) //删除一个集合中的元素
void clear() //删除一个集合中的所有元素
2.1.3 判断功能
boolean contains(Object 0) //判断集合中是否包含指定的元素
boolean containsAll(Collection c) //判断是否包含一个集合中的元素
boolean isEmpty() //判断集合是否为空
2.1.4 获取功能
Iterator iterator() //表示对集合中的元素进行迭代(遍历)
2.1.5 长度功能
int size() //返回集合中的元素数
2.1.6 交集功能
boolean retainAll(Collection c)//仅保留collection中那些也包含在指定collection的元素(可选操作)
2.1.7 集合转换成数组
Object[ ] toArray()
2.2 迭代器
迭代器是集合获取元素的方式
迭代器是依赖集合而存在的
3.List(添加、删除、获取、修改、迭代器)
List集合是Collection集合的子接口,接口与接口的关系是继承关系
特点:List集合是一个有序(元素存储和取出是一致的!)的集合,是可以有重复的元素
3.1 List特有功能
3.1.1 添加功能
void add(int index,Object element) //在指定位置添加指定的元素
3.1.2 删除功能
Object remove(int index) //删除指定位置的元素,返回的就是删除的元素
3.1.3 获取功能
Object get(int index) //获取指定位置的元素
3.1.4 修改功能
Object set(int index,object element)//将指定位置的元素用element该元素替代,返回的是需要被替代的元素
3.1.5 迭代器的功能
ListIterator listIteration() ListIterator继承自Collection中的Iterator接口
3.2 List 集合遍历方式:
i. 由size()和get()组合
ii.Iterate iterate();
iii. ListIterate Listiterate();
Iterate iterate()遍历可能导致并发修改异常(java.util.ConcurrentModificationException)
原因 i 当我们给集合中添加了新的字符串,迭代器不知道集合中是否添加了一个新的元素,所以产生这个异常
两种解决方式:
1) 使用迭代器遍历,迭代器添加,Iterator接口没有添加功能,所以使用列表迭代器:ListIterator
2) 使用集合遍历,使用集合添加
4.常见数据结构
i. 栈:先进后出
ii. 队列:先进先出
iii. 数组:查询快,增删慢
iv. 链表:查询慢,增删快
List的子类特点:
i. ArrayList(开发中使用的非常多,如果不知道用什么,就使用ArrayList)
底层数据结构是数组,查询快,增删慢,线程不安全,不同步,效率高
ii. Vector
底层数据结构是数组,查询快,增删慢,线程安全,同步,效率低
iii. LinkedList
底层数据结构数链表,查询慢,增删快,线程不安全,不同步,效率高
5.ArrayList
a.底层数据结构是数组,查询快,增删慢,线程不安全(多线程中讲),效率高
b.List集合的子类遍历集合中的元素可以使用的任何迭代遍历方式:普通for循环、Itreator()
c.ArrayList相关案例:需求: ArrayList去除集合中字符串的重复值(字符串的内容相同)
6.Vecotr
a. 底层数据结构是数组,查询快,增删慢,线程安全,同步,效率低
b. 特有功能:
i. public void addElement(Object obj) 给Vector集合中添加元素
ii. public Object elementAt(int index) 类似get(int index):获取指定索引处的元素
iii. public Enumeration elements() 类似Iterator iterator()获取迭代器对象
iv. boolean hasMoreElements() 类似hasNext():判断是否有下一个可以迭代的元素
v. Object nextElement() 类似next()
7.LinkedList
a. 底层数据结构是链表,查询慢,增删快,线程不安全,效率高!
b. 特有功能
i. 添加相关的方法:
public void addFirst(Object e)
public void addLast(Object e)
ii. 获取相关的方法:
public Object getFirst() 返回此列表的第一个元素
public Object getLast() 返回此列表的最后一个元素
iii. 删除相关的方法:
public Object removeFirst() 删除此列表的第一个元素
public Object removeLast() 删除此列表的最后一个元素
————————————————
原文链接:https://blog.csdn.net/fanfan_yang/article/details/76457182
参考文档:https://blog.csdn.net/fanfan_yang/article/details/76457182?ops_request_misc=&request_id=&biz_id=102&utm_term=javase%E7%AC%94%E8%AE%B0pdf&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-5-76457182.first_rank_v2_pc_rank_v29&spm=1018.2226.3001.4187