JAVA_SE_笔记整理(集合一)
集合一
1、集合概述
为什么出现集合类?
集合的存在是为了完善数组的功能
数组和集合类同是容器,有何不同?
数组虽然也可以存储对象,但长度是固定的;集合长度是可变的。数组中可以存储同一数据类型,集合只能存在引用对象。
集合类的特点:
集合只用于存储对象,集合长度可变,集合可以存储不同类型的对象
2、Collection接口概述
collection概述
Collection 层次结构中的根接口。Collection 表示一组对象,这些对象也称为 collection 的元素。一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。
collection接口成员方法
boolean add(E e) // 添加元素,成功返回true,失败返回false
boolean remove(Object o) // remove移除指定元素,成功返回true否则false
void clear() // 清除所有元素
boolean contains(Object o) // 是否包含该元素包含为true,否则为false
boolean isEmpty() // 是否为空,为空返回true,否则false
int size() // 返回集合长度。
boolean addAll(Collection c) // 添加所有元素
boolean removeAll(Collection c) // 移除所有元素
boolean containsAll(Collection c) // 判断参数集合是否被包含
boolean retainAll(Collection c) // 将参数以外集合的元素移除
Object[] toArray()
把集合转成数组,可以实现集合的遍历
Iterator iterator()
迭代器,集合的专用遍历方式
3、Iterator接口
Iterator接口概述
对 collection 进行迭代的迭代器
依赖于集合而存在
成员方法:
boolean hasNext() // 判断是否存在下一个元素
E next() // 返回下一个元素
4、List接口概述
List接口概述:
有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。
与 set 不同,list列表通常允许重复的元素。
List案例
存储字符串并遍历
存储自定义对象并遍历
List接口成员方法
void add(int index,E element) // 给指定下标的位置加入元素
E remove(int index) // 删除指定元素
E get(int index) // 获取指定下标的元素
E set(int index,E element) // 设置指定下标的元素
ListIterator listIterator() // 获取迭代器进行遍历
5、ListIterator接口的成员方法
boolean hasPrevious()
E previous()
6、常见数据结构
栈 先入后出,后入先出
队列 先入先出,后入后出
数组 方便查找,不方便增删
链表 方便增删,不方便查找
树
哈希表
7、ArrayList类概述及使用
ArrayList类概述
底层数据结构是数组,查询快,增删慢
线程不安全,效率高
ArrayList案例
存储字符串并遍历
存储自定义对象并遍历
8、Vector类概述及使用
Vector类概述
底层数据结构是数组,查询快,增删慢
线程安全,效率低
Vector类特有功能
public void addElement(E obj) 添加元素
public E elementAt(int index) 获取指定元素
public Enumeration elements() 遍历
Vector案例
存储字符串并遍历
存储自定义对象并遍历
9、LinkedList类概述及使用
LinkedList类概述
底层数据结构是链表,查询慢,增删快
线程不安全,效率高
LinkedList类特有功能
public void addFirst(E e)及addLast(E e)
public E getFirst()及getLast()
public E removeFirst()及public E removeLast()
练习重点collection,list,ArrayList,vector,LinkedList,遍历有三种方式,迭代器,for,增强for。
10、泛型
为什么会有泛型呢?
早期的Object类型可以接收任意的对象类型,但是在实际的使用中,会有类型转换的问题。也就存在这隐患,所以Java提供了泛型来解决这个安全问题。
泛型应用:
泛型的作用位置类,接口,方法
泛型类:
将泛型定义到类上的类称为泛型类
格式:public class 类名<泛型类型, 泛型类型, … 泛型类型>
注意:泛型类必须是引用类型
泛型接口:
把泛型定义到接口上
格式:public interface 接口名<泛型, 泛型>
泛型方法:
把泛型定义到方法上
格式:public <泛型类型> 返回值类型 方法名称(泛型类型) {}
泛型最重要的作用,规定参数以及返回值类型。
泛型高级(通配符)
泛型通配符<?>
任意类型,如果没有明确,那么就是Object以及任意的Java类了
? extends E
向下限定,E及其子类
? super E
向上限定,E及其父类