24.Collection集合
1.Collection集合
1.1数组和集合的区别【理解】
相同点
都是容器,可以存储多个数据
不同点
数组的长度是不可变的,集合的长度是可变的
数组可以存基本数据类型和引用数据类型
集合只能存引用数据类型,如果要存基本数据类型,需要存对应的包装类
1.2集合类体系结构【理解】
1.3Collection 集合概述和使用【应用】
Collection集合概述
是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素
JDK 不提供此接口的任何直接实现.它提供更具体的子接口(如Set和List)实现
创建Collection集合的对象
多态的方式
具体的实现类ArrayList
Collection集合常用方法
方法名 说明 boolean add(E e) 添加元素 boolean remove(Object o) 从集合中移除指定的元素 boolean removeIf(Object o) 根据条件进行移除 void clear() 清空集合中的元素 boolean contains(Object o) 判断集合中是否存在指定的元素 boolean isEmpty() 判断集合是否为空 int size() 集合的长度,也就是集合中元素的个数
1.4Collection集合的遍历【应用】
迭代器介绍
迭代器,集合的专用遍历方式
Iterator<E> iterator(): 返回此集合中元素的迭代器,通过集合对象的iterator()方法得到
Iterator中的常用方法
boolean hasNext(): 判断当前位置是否有元素可以被取出 E next(): 获取当前位置的元素,将迭代器对象移向下一个索引位置
Collection集合的遍历
package com.itheima.mycollectiondemo1; import java.util.ArrayList;
import java.util.Collection; public class MyCollectionDemo2 {
public static void main(String[] args) {
Collection<String> collection=new ArrayList<>();
//boolean add(E e) 添加元素
collection.add("aaa");
collection.add("bbb");
collection.add("ccc");
collection.add("dddd");
//System.out.println(collection); //method1(collection);
//method2(collection);
//method3(collection); //method4(collection);
//method5(collection);
method6(collection);
} public static void method6(Collection<String> collection) {
//int size() 集合的长度,也就是集合中元素的个数
int size = collection.size();
System.out.println(size);
} public static void method5(Collection<String> collection) {
//boolean isEmpty() 判断集合是否为空
collection.clear();
boolean result = collection.isEmpty();
System.out.println(result);
} public static void method4(Collection<String> collection) {
//boolean contains(Object o) 判断集合中是否存在指定的元素
boolean result1 = collection.contains("a");
System.out.println(result1);
boolean result2 = collection.contains("aaa");
System.out.println(result2);
} public static void method3(Collection<String> collection) {
//void clear() 清空集合中的元素
//就是将集合中所有的元素都删除
collection.clear();
System.out.println(collection);
} public static void method2(Collection<String> collection) {
//boolean removeIf(Object o) 根据条件进行移除
//removeIf底层会遍历集合,的到集合中的每一个元素
//s依次表示集合中的每一个元素
//就会把这每一个元素都到lambda表达式中去判断一下
//如果返回的是true,则删除
//如果返回的是false,则保留不删除 //boolean test(String t);
collection.removeIf(
(String s)->{
return s.length()==3;
}
);
System.out.println(collection);
} public static void method1(Collection<String> collection) {
//boolean remove(Object o) 从集合中移除指定的元素
//如果删除成功了,则返回true
//如果删除失败了,则返回false
boolean result1 = collection.remove("aaa");
boolean result2 = collection.remove("ddd");
System.out.println(result1);
System.out.println(result2);
System.out.println(collection);
}
}
1.4Collection集合的遍历【应用】
迭代器介绍
迭代器,集合的专用遍历方式
Iterator<E> iterator(): 返回此集合中元素的迭代器,该迭代器对象默认指向当前集合的0索引
Iterator中的常用方法
boolean hasNext(): 判断当前位置是否有元素可以被取出
E next(): 获取当前位置的元素,将迭代器对象移向下一个索引位置
Collection集合的遍历
package com.itheima.mycollectiondemo1; import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator; public class MyCollectionDemo3 {
public static void main(String[] args) {
Collection<String> list=new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("e");
//1.获取迭代器对象
//迭代器对象一旦被创建出来,默认指向集合的0索引处
Iterator<String> it = list.iterator();
// //利用迭代器里面的方法进行遍历
// //当前位置是否有元素可以被取出
// System.out.println(it.hasNext());
// //取出当前位置的元素+将迭代器往后移动一个索引的位置
// System.out.println(it.next());
// System.out.println(it.next());
// System.out.println(it.next());
// System.out.println(it.next());
// System.out.println(it.next());
// System.out.println(it.next());
while(it.hasNext()){
System.out.println(it.next());
}
} }
迭代器小结:
Iterator<E> iterator:创建迭代器对象,默认指向当前集合的0索引。
boolean hashNext():判断当前位置是否有元素可以被取出
E next():获取当前位置
将迭代器对象移向下一个索引位置
迭代器中删除的方法
void remove(): 删除迭代器对象当前指向的元素
练习:创建一个集合,有元素a b b c d
使用循环遍历这个集合,判断当前获取到的元素是否为b,如果是就删除
package com.itheima.mycollectiondemo1; import java.util.ArrayList;
import java.util.Iterator; public class MyCollectionDemo5 {
public static void main(String[] args) {
ArrayList<String> list=new ArrayList<>();
list.add("a");
list.add("b");
list.add("b");
list.add("c");
list.add("d");
Iterator<String> it=list.iterator();
while(it.hasNext()){
String s=it.next();
if("b".equals(s)){
//指向谁,删除谁
it.remove();
}
}
System.out.println(list); } }
1.5增强for循环【应用】
介绍
它是JDK5之后出现的,其内部原理是一个Iterator迭代器
实现Iterable接口的类才可以使用迭代器和增强for
简化数组和Collection集合的遍历
格式
for(集合/数组中元素的数据类型 变量名 : 集合/数组名) {
// 已经将当前遍历到的元素封装到变量中了,直接使用变量即可
}
- ArrayList<String> list=new ArrayList<>();
- //添加一些元素
- for(String s:list){
- System.out.println(i);
- }
代码
package com.itheima.mycollectiondemo1; import java.util.ArrayList; public class MyCollectionDemo6 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("e");
list.add("f");
//1.数据类型一定是集合或者数组中元素的类型
//2.str仅仅是一个变量名而已,在循环的过程中,依次表示集合或者数组中的每一个元素
//3.list就是要遍历的集合或者数组.
for (String str : list) {
System.out.println(str);
}
}
}
注意事项:
在增强for 中修改第三方变量的值不会影响到集合中的元素
三种循环的使用场景
如果需要操作索引,使用普通for循环
如果在遍历的过程中需要删除元素,请使用迭代器
如果仅仅想遍历,那么使用增强for
案例:Collection集合存储学生对象并遍历
需求:创建一个Collection集合存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合
思路:
1.定义学生类
2.创建Collection集合对象
3.创建学生对象
4.把学生添加到集合
5.遍历集合(迭代器方式)
package com.itheima.mycollectiondemo1; import java.util.ArrayList;
import java.util.Iterator; public class MyCollectionDemo8 {
public static void main(String[] args) {
ArrayList<Student> list=new ArrayList<>();
Student s1=new Student("小皮同学",23);
Student s2=new Student("小路同学",31);
Student s3=new Student("小甲同学",33);
list.add(s1);
list.add(s2);
list.add(s3); //迭代器的方式进行遍历
Iterator<Student> it=list.iterator();
while(it.hasNext()){
Student s = it.next();
System.out.println(s);
}
System.out.println("-------------");
//增强for
for (Student student : list) {
System.out.println(student);
}
} }
2.List集合
2.1List集合的概述和特点【记忆】
List集合的概述
有序集合,这里的有序指的是存取顺序
用户可以精确控制列表中每个元素的插入位置,用户可以通过整数索引访问元素,并搜索列表中的元素
与Set集合不同,列表通常允许重复的元素
List集合的特点
有序:存储和取出的元素顺序一致
有索引:可以通过索引操作元素
可重复:存储的元素可以重复
package com.itheima.mylistdemo1; import java.util.ArrayList;
import java.util.Iterator;
import java.util.List; public class MyListDemo1 {
public static void main(String[] args) {
List<String> list=new ArrayList<>(); list.add("aaa");
list.add("bbb");
list.add("ccc");
Iterator<String> it=list.iterator();
while(it.hasNext()){
String s = it.next();
System.out.println(s);
}
System.out.println("================");
for (String s : list) {
System.out.println(s);
}
}
}
2.2List集合的特有方法【应用】
方法名 | 描述 |
---|---|
void add(int index,E element) | 在此集合中的指定位置插入指定的元素 |
E remove(int index) | 删除指定索引处的元素,返回被删除的元素 |
E set(int index,E element) | 修改指定索引处的元素,返回被修改的元素 |
E get(int index) | 返回指定索引处的元素 |
package com.itheima.mylistdemo1; import java.util.ArrayList;
import java.util.List; public class MyListDemo2 {
public static void main(String[] args) {
List<String> list=new ArrayList<>();
list.add("aaa");
list.add("bbb");
list.add("ccc"); //method1(list);
//method2(list);
//method3(list);
// E get(int index)返回指定索引处的元素
String s = list.get(0);
System.out.println(s); } public static void method3(List<String> list) {
// E set(int index,E element)修改指定索引处的元素,返回被修改的元素
//注意事项,被替换的那个元素,在集合中就不存在了
String result = list.set(0, "qqq");
System.out.println(result);
System.out.println(list);
} public static void method2(List<String> list) {
// E remove(int index)删除指定索引处的元素,返回被删除的元素
//在list集合中有两个删除方法
//第一个 删除指定元素,返回值表示当前元素是否删除成功
//第二个 删除指定索引的元素,返回值表示实际删除的元素
String s= list.remove(0);
System.out.println(s);
System.out.println(list);
} public static void method1(List<String> list) {
//void add(int index,E element)在此集合中的指定位置插入指定的元素
//原来位置上的元素会往后挪一个索引
list.add(0,"qqq");
System.out.println(list);
}
}
24.Collection集合的更多相关文章
- Java基础知识强化之集合框架笔记08:Collection集合自定义对象并遍历案例(使用迭代器)
1. Collection集合自定义对象并遍历案例(使用迭代器) (1)首先定义一个Student.java,如下: package com.himi.collectionIterator; publ ...
- ------------------java collection 集合学习 ----小白学习笔记,,有错,请指出谢谢
<!doctype html>java对象集合学习记录 figure:first-child { margin-top: -20px; } #write ol, #write ul { p ...
- 大数据之路week02 Collection 集合体系收尾(Set)
1.Set集合(理解) (1)Set集合的特点 无序,唯一. (2)HashSet集合(掌握) A: 底层数据结构是哈希表(是一个元素为链表的数组) B: 哈希表底层依赖两个方法: hashCode( ...
- 浅谈Collection集合
俗话说:一个东西,一件事都离不开三句话:"是什么,为什么,怎么办" 集合是什么: 集合简单的说一个数组集合的高级体现,用来存储数据或对象的容器: 集合为什么存在: 集合只是体现了对 ...
- Collection集合的功能及总结
Collection集合是集合顶层接口,不能实例化 功能 1.添加功能 boolean add(Object obj):添加一个元素 boolean addAll(Collection c):添加一个 ...
- JAVA collection集合之 扑克牌游戏
主要内容:这里使用collection集合,模拟香港电影中大佬们玩的扑克牌游戏. 1.游戏规则:两个玩家每人手中发两张牌,进行比较.比较每个玩家手中牌最大的点数,大小由A-2,点数大者获胜.如果点数相 ...
- Collection集合List、Set
Collection集合,用来保存一组数据的数据结构. Collection是一个接口,定义了所有集合都应该包含的特征和行为 Collection派生出了两类集合 List和Set List接口:Li ...
- Collection集合之六大接口(Collection、Set、List、Map、Iterator和Comparable)
首先,我们先看一下Collection集合的基本结构: 1.Collection接口 Collection是最基本集合接口,它定义了一组允许重复的对象.Collection接口派生了两个子接口Set和 ...
- java.util.Map按照key值合并的value的Collection 集合中。
用java实现把多个map的内容合并的一个resultMap中 代码大致如下 /** * @author Shalf */ public class MapUtil { /** * 把partMa ...
随机推荐
- 力扣 - 92. 反转链表II
目录 题目 思路1(迭代) 代码 复杂度分析 思路2(递归) 代码 复杂度分析 题目 92. 反转链表 II 思路1(迭代) 将反转链表分成3个部分:前一段未反转的部分.待反转链表部分.后一段未反转部 ...
- Mybatis-plus 上
Mybatis-plus 上 简介 1.什么是Mybatis-plus MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发 ...
- 201871030118-雷云云 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告
项目 内容 课程班级博客 班级链接 这个作业要求链接 作业链接 我的课程学习目标 (1)体验软件项目开发中的两人合作,练习结对编程(2)掌握Github协作开发程序的操作方法(3)学习遗传算法 这个作 ...
- BUAA_2021_SE_Pair_Work_#3_Review
结对项目第三阶段博客 项目 内容 这个作业属于哪个课程 2021春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 结对项目-第三阶段 我在这个课程的目标是 通过课程学习,完成第一个可以称之为 ...
- Nodejs入门(二)
Nodejs基础api 1.path path模块提供了很多实用的工具函数,用于处理文件与目录的路径,下面是它的api: normalize 方法可以输出规范格式的path字符串 join 方法用于拼 ...
- Latex的使用(Ctex+TeXstudio)
1.下载 CTEX Latex 本来是只支持英文的,但是实在太好用了,遂结合中国的团队以及有识之士,开发了这个 CTEX , CTEX 有 TexLive( TexLive 为 Latex 安装包的名 ...
- 阿里巴巴面试-Java后端-社招5面技术总结(Offer已拿)
最近接到阿里妈妈的面试通知,历经一个月,虽然过程挺坎坷,但总算是拿到了offer.这里简单记录下面试所遇问题,仅供各位大佬参考. 由于前面两面的时间过去的有点久了,只能根据记忆大概写些记得问题. 部门 ...
- C++ Primer Plus(第6版)中文版电子版awz+epub+mobi三版
电子书资源:C++ Primer Plus(第6版)中文版 书籍简介: C++是在C语言基础上开发的一种集面向对象编程.通用编程和传统的过程化编程于一体的编程语言,是C语言的超集.<C++ ...
- 微服务的进程间通信(IPC)
微服务的进程间通信(IPC) 目录 微服务的进程间通信(IPC) 术语 概述 通信视角 APIs 消息格式 RPC REST gRPC 断路器 API通信的健壮性 服务发现 异步消息 概念 消息 消息 ...
- OO_UNIT4_SUMMARY
经过一个学期的学习,OO课程终于落下帷幕.本次博客会首先对第四单元作业的架构进行分析,再对OO课程进行总体回顾,最后是个人的建议与体会. 一.第四单元三次作业架构设计 1.第一次作业 第一次作业是对类 ...