集合collection

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容