Java基础---集合(Collection接口、List接口及其子类、增强for)

时间:2021-01-26 17:57:04
-----------android培训、java培训、java学习型技术博客、期待与您交流!------------

一、集合

1、集合类概述

面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,Java就提供了集合类。

2、数组和集合类的不同

(1)数组虽然也可以存储对象,但长度是固定的;集合长度是可变的。

(2)数组中可以存储基本数据类型,集合只能存储对象。

3、集合类的特点

集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象。

二、Collection接口

1、Collection 层次结构中的根接口。Collection 表示一组对象,这些对象也称为 collection 的元素。

一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。

2、Collection接口成员方法

(1)添加功能:

boolean add(Object e) 向当前集合中添加给定的元素对象

booleana ddAll(Collection c) 向当前集合中添加给定的集合元素

(2)删除功能:

void clear() 把当前集合中的元素清空

boolean remove(Object o) 把当前集合中,给定的元素对象删除

boolean removeAll(Collection c) 在当前集合中, 将给定的集合元素 删除

(3)判断功能:

boolean contains(Object o) 判断当前集合中,是否包含给定的元素对象

boolean containsAll(Collection c) 判断当前集合中,是否包含给定的集合中的元素对象

boolean isEmpty() 判断当前集合是否为空的集合

(4)遍历功能:

Iterator iterator() 迭代器, 作用就是用来遍历集合的, 得到集合中的每一个元素

(5)交集功能:

boolean retainAll(Collection c) 获取当前集合与给定集合中 交集的元素对象

(6)长度功能:

int size() 获取集合中元素的个数

(7)转换功能:

Object[] toArray() 把当前集合中的元素, 转存到 数组中,可以实现集合的遍历

三、Iterator接口

1、Iterator接口概述

对 collection 进行迭代的迭代器

依赖于集合而存在

2、Iterator接口成员方法

boolean hasNext() 判断集合中有没有下一个元素

E next() 获取集合中的元素

案例:

Java基础---集合(Collection接口、List接口及其子类、增强for)
   Java基础---集合(Collection接口、List接口及其子类、增强for)


四、List接口

1、List接口概述

有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。

用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。

与 set 不同,列表通常允许重复的元素。

2、List接口成员方法

void add(int index,E element)

E remove(int index)

E get(int index)

E set(int index,E element)

ListIterator listIterator()

3、常见数据结构

栈 数据先进后出

队列 数据先进先出

数组

链表 记录地址

树 分支结构,排序

哈希表 存储哈希值的数组

4、ArrayList类概述及使用

(1)ArrayList类概述

底层数据结构是数组,查询快,增删慢

线程不安全,效率高

容量10个,增长50%。

5、Vector类概述及使用

(1)Vector类概述

底层数据结构是数组,查询快,增删慢

线程安全,效率低

容量10个,增长100%

(2)Vector类特有功能

public void addElement(E obj)

public E elementAt(int index)

public Enumeration elements()

6、LinkedList类概述及使用

(1)LinkedList类概述

底层数据结构是链表,查询慢,增删快

线程不安全,效率高

(2)LinkedList类特有功能

public void addFirst(E e)及addLast(E e)

public E getFirst()及getLast()

public E removeFirst()及public E removeLast()

7、泛型概述及使用

1、好处

(1)可以把代码运行的时候才能看到的错误,提前到,编写代码的阶段

把运行期的错误,提前到编译期

(2)省去了强制转换的麻烦

(3)有效的避免了类型转换异常 ClassCastException

2、泛型应用

(1)泛型类

把泛型定义在类上

格式:public class 类名<泛型类型1,…>

注意:泛型类型必须是引用类型

(2)泛型方法

把泛型定义在方法上

格式:public <泛型类型> 返回类型 方法名(泛型类型 .)

(3)泛型接口

把泛型定义在接口上

格式:public interface 接口名<泛型类型1…>

(4)泛型高级(通配符)

泛型通配符<?>

任意类型,如果没有明确,那么就是Object以及任意的Java类了


8、ArrayList、 Vector、 LinkedList三者的区别

(1)ArrayList:

底层: 采用数组结构

特点: 线程不同步-- 不安全--效率高】

增删慢,查找快

jdk1.2

(2)Vector:

底层: 采用数组结构

特点: 线程同步 -- 安全 --效率低

增删慢,查找快

jdk1.0

(3)LinkedList:

底层: 采用链表结构

特点: 线程不同步-- 不安全--效率高

增删快,查找慢

jdk1.2

(4)数组中有length方法吗? 字符串中有length()方法吗? 集合中有length()方法吗?

答:数组中没有length方法,有的是length属性

字符串中有length方法

集合中没有length方法, 有的是 size方法

案例:

Java基础---集合(Collection接口、List接口及其子类、增强for)
Java基础---集合(Collection接口、List接口及其子类、增强for)

五、增强for概述及使用

1、增强for概述

简化数组和Collection集合的遍历

格式:

for(元素数据类型 变量 : 数组或者Collection集合) {

使用变量即可,该变量就是元素

}

好处:简化遍历

注意事项:增强for的目标要判断是否为null

案例:

Java基础---集合(Collection接口、List接口及其子类、增强for)
Java基础---集合(Collection接口、List接口及其子类、增强for)