java list collection,JAVA基础---Collection集合 List

##一 Collection集合

### 01 集合体系结构

a:Collection 集合(单身汉集合)

|_ List

|_ ArrayList(重点掌握)

|_ LinkedList

|_ Set

|_ HashSet(重点掌握)

|_ LinkedHashSet

|_ TreeSet

b:Map集合(夫妻对集合)

|_ HashMap(重点掌握)

|_ LinkedHashMap

|_ Hashtable

|_ Properties(重点掌握)

##02.Collection集合概述和基本使用

总结:

* Collection集合概述

是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素

JDK 不提供此接口的任何直接实现,它提供更具体的子接口(如Set和List)实现

有的集合可以存储重复的元素

有的集合不可以存储重复的元素

有的集合是有索引的

有的集合是没有索引的

有的集合是有序的

有的集合是没有顺序的

* Collection集合基本使用

Collection col = new ArrayList<>();

##03 Collection集合的常用方法【应用】

* boolean add(E e)          添加元素  永远返回的都是true  可以添加重复的内容

* boolean remove(Object o)  从集合中移除指定的元素

* void    clear()            清空集合中的元素

* boolean contains(Object o)判断集合中是否存在指定的元素

* boolean isEmpty()        判断集合是否为空

* int    size()              集合的长度,也就是集合中元素的个数

##04 Collection集合的遍历

*  迭代器的介绍

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

Iterator iterator():返回此集合中元素的迭代器,通过集合的iterator()方法得到

迭代器是通过集合的iterator():方法得到的,所以我们说它是依赖于集合而存在的

* Collection集合的遍历

##05 集合使用步骤图解

第一步: 创建集合(该如何选择集合)

第二步: 添加元素

* 创建元素

* 将元素添加到集合中

第三步: 遍历集合

* 迭代器

* 获取迭代器

* 使用hasNext() 方法判断是否有元素

* 使用next() 方法来获取元素

* 增强for

* 普通for

## 06 集合的案例

* 案例需求

创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合

* 案例代码:

// 创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合

public class CollectionTest01 {

public static void main(String[] args) {

// 定义学生Student类

// 创建集合

// ArrayList list = new ArrayList<>();

Collection list = new ArrayList<>();

// 创建三个学生对象

Student stu1 = new Student("张三", 13);

Student stu2 = new Student("李四", 14);

Student stu3 = new Student("王五", 15);

// 将三个学生对象添加到集合中

list.add(stu1);

list.add(stu2);

list.add(stu3);

// 遍历集合 使用迭代器

Iterator it = list.iterator();

while (it.hasNext()) {

Student stu = it.next();

System.out.println(stu);

}

}

}

## 二.List集合

## 06 List集合概述和特点

总结:

* List集合特点

* 允许存储重复的元素

* 有序的(存储元素的顺序和取出元素的顺序是一致的)

* 索引的

## 07 List(ArrayList)集合的特有方法【应用】

* void add(int index,E  element) 在此集合中的指定位置插入指定的元素

* E remove(int  index)          删除指定索引处的元素,返回被删除的元素

* E set(int index,E  element)    修改指定索引处的元素,`返回被修改的元素

* E get(int  index)              返回指定索引处的元素

## 08 List集合的案例

* 案例需求

创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合

* 案例代码:

//  创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合

public class ListTest01 {

public static void main(String[] args) {

// 定义学生Student类

// 创建集合

// ArrayList list = new ArrayList<>();

// Collection list = new ArrayList<>();

List list = new ArrayList<>();

// 创建三个学生对象

// Student stu1 = new Student("张三", 13);

// Student stu2 = new Student("李四", 14);

// Student stu3 = new Student("王五", 15);

// 将三个学生对象添加到集合中

list.add(new Student("张三", 13));

list.add(new Student("李四", 14));

list.add(new Student("王五", 15));

// 遍历集合 使用迭代器

Iterator it = list.iterator();

while (it.hasNext()) {

Student stu = it.next();

System.out.println(stu);

}

System.out.println("~~~~~~~~~~~~~~~~~~~~~");

// 使用普通for循环遍历

for (int i = 0; i < list.size(); i++) {

Student stu = list.get(i);

System.out.println(stu);

}

}

}

## 09 并发修改异常(了解出现的原因)

总结:

* 出现的原因

预期修改的值跟实际修改的值不相符,就会报并发修改异常 ConcurrentModificationException

* 解决的方案

* 使用for循环

* 不使用迭代器就不会出现这个问题

* 使用Iterator有一个子接口ListIterator

使用迭代器最常见一种方式就是 遍历集合

## 10 列表迭代器(了解)

* ListIterator 介绍

通过List集合的listIterator()方法得到,所以说它是List集合特有的迭代器

用于允许程序员沿任一方向遍历的列表迭代器,在迭代期间修改列表,并获取列表中迭代器的当前位置

## 11 增强for循环

* 增强for作用

方便遍历数组/集合

* 增强for格式

for (元素的类型 变量名 : 数组/集合对象 ) {

打印元素

}

底层也是使用迭代器来实现的,也就说,我们使用增强for循环,也不能在遍历的是,进行操作集合中的元素

## 12 集合的案例

* List集合存储学生对象三种方式遍历【应用】

* 案例需求

创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合

##三.数据结构

总结:

* A:栈

* 特点: 先进后出

举例: 弹夹

* B:队列

* 特点: 先进先出

举例: 排队安检

* C:数组

* 特点: 查询快 增删慢

* D:链表

* 特点: 查询慢 增删快

链表元素成为结点: 地址 元素 下一个地址

E: 查询快  增删快

哈希表(数组 + 链表 + 链表 + 红黑树)

## 13 List集合子类的特点

* ArrayList集合

* 底层数据结构: 数组

* 特点: 查询快 增删慢

* LinkedList 集合

* 底层数据结构:链表

* 特点: 查询慢 增删快

## 14 集合的案例

ArrayList集合存储学生对象三种方式遍历【应用】

* 案例需求

创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合

## 14 LinkedList 集合的特有功能【应用】

* 特有方法

* public void addFirst(E e)在该列表开头插入指定的元素

* public void addLast(E e) 将指定的元素追加到此列表的末尾

* public E getFirst()      返回此列表中的第一个元素

* public E getLast()    返回此列表中的最后一个元素

* public E removeFirst()  从此列表中删除并返回第一个元素

* public E removeLast()  从此列表中删除并返回最后一个元素

public class LinkedListDemo02 {

public static void main(String[] args) {

// 创建LinkedList集合对象

LinkedList list = new LinkedList<>();

list.add("you");

list.add("wo");

list.add("ta");

list.add("tata");

// public void addFirst(E e)在该列表开头插入指定的元素

// public void addLast(E e) 将指定的元素追加到此列表的末尾

list.addFirst("tamen");

list.addLast("women");

// public E getFirst()      返回此列表中的第一个元素

// public E getLast()    返回此列表中的最后一个元素

System.out.println(list.getFirst());

System.out.println(list.getLast());

// public E removeFirst()  从此列表中删除并返回第一个元素

// public E removeLast()  从此列表中删除并返回最后一个元素

list.removeFirst();

list.removeLast();

System.out.println(list);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值