Collection集合
1.Collection集合
1.Collection集合(单身汉集合)
1. List
- ArrayList(单身汉集合)
- LinkenList
2. Set - HashSet(重点掌握)
- LinkenHashSet
- TreeSet
2.Collection集合概述和基本使用
Collection集合概述
- 是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素。JDK不提供接口任何直接实现,它提供更具体的子接口(如Set和List)实现。
Collection集合基本使用
Collection<元素的类型> col = new ArrayList<>();
3.Collection集合的常用方法
方法名 | 说明 |
---|---|
boolean add(E a) | 添加元素 |
boolean remove(Object o) | 从集合中移除指定的元素 |
void clear() | 清空集合中的元素 |
boolean isEmpty() | 判断集合是否为空(如果为空则返回true) |
int size() | 集合的长度,也是集合的元素个数 |
boolean contains(object 0) | 判断集合中是否有指定的元素 |
4Collection集合的遍历
迭代器的介绍:
迭代器,集合的专用遍历方式
Iterator iterator();返回此集合中的元素的迭代器,通过集合的iterator()方法得到迭代器是通过集合的Iterator();所以我们说它是依赖于集合而存在的。
Collection集合的遍历:
public static void main(String[] args) {Collection<String> coll = new ArrayList<>();coll.add("球姐");coll.add("宝宝");coll.add("宋吉吉");Iterator<String> it = coll.iterator();while (it.hasNext()) {String next = it.next();System.out.println(next);}System.out.println(coll);}
5.集合使用步骤图解
- 创建集合(该如何选择集合)
- 添加元素
- 创建元素
- 将元素添加到集合中
- 遍历集合
- 迭代器
- 获取迭代器
- 使用hasNext()方法判断是否有元素
- 使用next()方法来获取元素
- 增强for
- 普通for
- 迭代器
6集合的案例:
/*
* 案例需求创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合
*/
public class CollectionDemo03 {public static void main(String[] args) {// 创建集合 ArrayList// ArrayList<Student> list = new ArrayList<>();Collection<Student> list = new ArrayList<>();list.add(new Student("蓉蓉",39));list.add(new Student("宋吉吉",40));list.add(new Student("陶吉吉",35));// 迭代器Iterator<Student> it = list.iterator();while (it.hasNext()) {Student stu = it.next();System.out.println(stu);}}
}
2.LIst集合
1.List集合概述和特点:
- 有序:存储和取出的顺序是一样的
- 可重复:可以存储重复的元素
- 有索引:提供了整数的索引
2.List集合的特有方法:
方法名 | 说明 |
---|---|
void add() | 添加元素 |
remove() | 删除元素 |
set() | 修改元素 |
get() | 返回指定索引处的元素 |
3.List集合的案例
案例需求
创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合
public class CollectionDemo03 {public static void main(String[] args) {// 创建集合 List<Student> list = new ArrayList<>();list.add(new Student("蓉蓉",39));list.add(new Student("宋吉吉",40));list.add(new Student("陶吉吉",35));// 迭代器Iterator<Student> it = list.iterator();while (it.hasNext()) {Student stu = it.next();System.out.println(stu);}}
}
4.并发修改异常(了解出现的原因)
- 出现的原因
- 预期修改的值跟实际修改的值不相符,就会报并发性异常ConcurrentModificationException
- 解决的方案:
- 用ListIterator
- 不用Iterator
- 同普通for循环
5.ListIterator介绍
ListIterator介绍:
通过List集合的ListIterator()方法得到的,所以说它是List集合特有的迭代器
用于允许程序眼沿任何一方向遍历的列表迭代器,在迭代期间修改列表,并获取列表中迭代器的当前位置。
6.增强for循环
增强for循环作用
- 方便遍历数组和集合
增强for格式
- for(元素的数据类型 变量名:数组|集合对象){
}
7.集合的遍历
List集合存储学生对象三种方式遍历【应用】
- 案例需求
创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合
public class ListTest {public static void main(String[] args) {// 创建集合 ArrayListList<Student> list = new ArrayList<>();list.add(new Student("蓉蓉", 39));list.add(new Student("宋吉吉", 40));list.add(new Student("陶吉吉", 35));// 迭代器Iterator<Student> it = list.iterator();while (it.hasNext()) {Student stu = it.next();System.out.println(stu);}System.out.println("~~~~~~~~~~~~~~~~~~~~~~~");// 普通forfor (int i = 0; i < list.size(); i++) {System.out.println(list.get(i));}} }
- 案例需求
7.数据结构
- 总结:
- 栈
- 特点:先进后出
- 举例:弹夹
- 队列
- 特点:先进先出
- 举例:排队
- 数组
- 特点:查询快,增删慢
- 链表
- 特点:查询慢,增删快
- 哈希表(数组+链表+红黑树)
- 特点:查询快,增删慢
- 栈
8.List集合子类的特点
- ArrayList集合add()
- 抵偿数据结构:数组,动态数组(由JDk维护这个数组 插入元素 是,扩展数组长度)
- 特点:查询快,增删慢。
- LinkedList集合
- 底层数据结构:双向链表
- 特点:查询慢,增删快
9.集合的案例
ArrayList集合存储学生对象三种方式遍历【应用】
- 案例需求
创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合
public class ArrayListTest {public static void main(String[] args) {// 创建集合 ArrayList// ArrayList<Student> list = new ArrayList<>();LinkedList<Student> list = new LinkedList<>();list.add(new Student("蓉蓉", 39));list.add(new Student("宋吉吉", 40));list.add(new Student("陶吉吉", 35));list.add(0, new Student());list.remove(list.size() - 1);list.removeLast();// 迭代器Iterator<Student> it = list.iterator();while (it.hasNext()) {Student stu = it.next();System.out.println(stu);}System.out.println("~~~~~~~~~~~~~~~~~~~~~~~");// 普通forfor (int i = 0; i < list.size(); i++) {System.out.println(list.get(i));}System.out.println("~~~~~~~~~~~~~~~~~~~~~~~");// 增强for 数组|集合对象名.for + 回车for (Student student : list) {System.out.println(student);}// iter + 回车for (Student student : list) {System.out.println(student);}}}
10.LinkedList集合的特有功能
特有方法
| * public void addFirst(E e) 在该列表开头插入指定的元素
* public void addLast(E e) 将指定的元素追加到此列表的末尾
* public E getFirst() 返回此列表中的第一个元素 * public E getLast() 返回此列表中的最后一个元素 * public E removeFirst() 从此列表中删除并返回第一个元素 * public E removeLast() 从此列表中删除并返回最后一个元素 |
Collection集合相关推荐
- Collection集合List、Set
Collection集合,用来保存一组数据的数据结构. Collection是一个接口,定义了所有集合都应该包含的特征和行为 Collection派生出了两类集合 List和Set List接口:Li ...
- 5.Collection集合 List集合 泛型
一.Collection集合 1.1 数组和集合的区别 相同点:都是容器,可以存储多个数据. 不同点: 数组的长度是不可变的,集合的长度是可变的. 数组可以存基本数据类型和引用数据类型:集合只能存引用 ...
- plsql 循环存储过程返回数据集合_Java基础(十五)——Collection集合、泛型 - 寒江雨
Collection集合 集合概述 集合:集合是Java中提供的一种容器,可以用来存储多个数据 数组的长度是固定的,集合的长度是可变的 数组中存储的是同一种数据类型的元素,可以存储基本数据类型也可以存 ...
- Java学习之容器上(Collection接口常用方法,Iterator接口,使用foreach循环遍历Collection集合元素,Set集合通用知识(Hashset类,hashcode()与Lin
1.容器API的类图结构如下: JAVA的集合类是一种特别有用的工具类,它可以用于存储数量不等的多个对象,并可以实现常用数据结构,如栈,队列等,除此之外,JAVA集合还可用于保存具有映射关系的关联数组 ...
- Collection集合中的 contains 和 remove 使用深入——为什么要重写equals() ?
引言 在Collection集合中: contains方法是判断一个集合里面是否包含指定元素,如果有则返回true: remove方法是从集合中删除指定元素的单个实例: 这两个方法看起很简单,用起来也 ...
- 1.14 Stream操作Collection集合
使用Java 8新增的Stream操作Collection集合 Java 8 还新增了 Stream.IntStream.LongStream.DoubleStream 等流式 API,这些 API ...
- 1.13 Predicate操作Collection集合
使用Java 8新增的Predicate操作Collection集合 Java 8 起为 Collection 集合新增了一个 removeIf(Predicate filter) 方法,该方法将会批 ...
- 1.12 foreach循环遍历Collection集合
Java使用foreach循环遍历Collection集合 使用 Iterator 接口迭代访问 Collection 集合里的元素,除了这个方法之外,我们还可以使用 Java 5 提供的 forea ...
- 1.9 Lambda表达式遍历Collection集合
Java使用Lambda表达式遍历Collection集合 Java 8 为 Iterable 接口新增了一个 forEach(Consumer action) 默认方法,该方法所需参数的类型是一个函 ...
- collection集合 地址_java.util包下的集合
Java 集合可分为 Collection 和 Map 两种体系 1.Collection接口:单列数据,定义了存取一组对象的方法的集合 List:元素有序.可重复的集合 Set:元素无序.不可重复的 ...
最新文章
- 新建本地仓库,同步远程仓场景,出现git branch --set-upstream-to=origin/master master 解决方法...
- UVA 10603 Fill
- 设计printf调试宏
- net的retrofit--WebApiClient库
- ZooKeeper的十二连问,你顶得了嘛?
- python实现猜数字小游戏
- 更改当前数据库的所有者
- CodeForces - 1610B Kalindrome Array
- keras 双向LSTM 简单示例
- 关于微信退款出现错误代码:52的解决方法【转】
- C++ - 派生类访问模板基类(templatized base class)命名
- 命令行参数解析函数 getopt
- 国内博客搬家工具大全
- 【零基础Eviews实例】01异方差的检验与修正
- 320240带中文字库液晶显示屏
- DS1302时钟芯片的使用
- 保研心得(华东师范、东南和浙软)
- Tightvncserver 连接树莓派的方法及步骤
- 计算机怎么快捷截图桌面,电脑截屏的快捷键是什么
- postman进行批量测试的步骤