JAVA_SE_笔记整理(集合一)

集合一

1、集合概述

为什么出现集合类?

集合的存在是为了完善数组的功能

数组和集合类同是容器,有何不同?

数组虽然也可以存储对象,但长度是固定的;集合长度是可变的。数组中可以存储同一数据类型,集合只能存在引用对象。

集合类的特点:

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

2Collection接口概述

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()

迭代器,集合的专用遍历方式

3Iterator接口

Iterator接口概述

对 collection 进行迭代的迭代器

依赖于集合而存在

成员方法:

boolean hasNext() // 判断是否存在下一个元素

E next() // 返回下一个元素

4List接口概述

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() // 获取迭代器进行遍历

5ListIterator接口的成员方法

boolean hasPrevious()

E previous()

6常见数据结构

栈 先入后出,后入先出

队列 先入先出,后入后出

数组 方便查找,不方便增删

链表 方便增删,不方便查找

哈希表

7ArrayList类概述及使用

ArrayList类概述

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

线程不安全,效率高

ArrayList案例

存储字符串并遍历

存储自定义对象并遍历

 

8Vector类概述及使用

Vector类概述

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

线程安全,效率低

Vector类特有功能

public void addElement(E obj) 添加元素

public E elementAt(int index) 获取指定元素

public Enumeration elements() 遍历

Vector案例

存储字符串并遍历

存储自定义对象并遍历

9LinkedList类概述及使用

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及其父类

原文地址:https://www.cnblogs.com/songliuzhan/p/12624134.html