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集合的更多相关文章

  1. Java基础知识强化之集合框架笔记08:Collection集合自定义对象并遍历案例(使用迭代器)

    1. Collection集合自定义对象并遍历案例(使用迭代器) (1)首先定义一个Student.java,如下: package com.himi.collectionIterator; publ ...

  2. ------------------java collection 集合学习 ----小白学习笔记,,有错,请指出谢谢

    <!doctype html>java对象集合学习记录 figure:first-child { margin-top: -20px; } #write ol, #write ul { p ...

  3. 大数据之路week02 Collection 集合体系收尾(Set)

    1.Set集合(理解) (1)Set集合的特点 无序,唯一. (2)HashSet集合(掌握) A: 底层数据结构是哈希表(是一个元素为链表的数组) B: 哈希表底层依赖两个方法: hashCode( ...

  4. 浅谈Collection集合

    俗话说:一个东西,一件事都离不开三句话:"是什么,为什么,怎么办" 集合是什么: 集合简单的说一个数组集合的高级体现,用来存储数据或对象的容器: 集合为什么存在: 集合只是体现了对 ...

  5. Collection集合的功能及总结

    Collection集合是集合顶层接口,不能实例化 功能 1.添加功能 boolean add(Object obj):添加一个元素 boolean addAll(Collection c):添加一个 ...

  6. JAVA collection集合之 扑克牌游戏

    主要内容:这里使用collection集合,模拟香港电影中大佬们玩的扑克牌游戏. 1.游戏规则:两个玩家每人手中发两张牌,进行比较.比较每个玩家手中牌最大的点数,大小由A-2,点数大者获胜.如果点数相 ...

  7. Collection集合List、Set

    Collection集合,用来保存一组数据的数据结构. Collection是一个接口,定义了所有集合都应该包含的特征和行为 Collection派生出了两类集合 List和Set List接口:Li ...

  8. Collection集合之六大接口(Collection、Set、List、Map、Iterator和Comparable)

    首先,我们先看一下Collection集合的基本结构: 1.Collection接口 Collection是最基本集合接口,它定义了一组允许重复的对象.Collection接口派生了两个子接口Set和 ...

  9. java.util.Map按照key值合并的value的Collection 集合中。

    用java实现把多个map的内容合并的一个resultMap中 代码大致如下 /**  * @author Shalf  */ public class MapUtil { /** * 把partMa ...

随机推荐

  1. [React Hooks长文总结系列一]初出茅庐,状态与副作用

    写在开头 React Hooks在我的上一个项目中得到了充分的使用,对于这个项目来说,我们跳过传统的类组件直接过渡到函数组件,确实是一个不小的挑战.在项目开发过程中也发现项目中的其他小伙伴(包括我自己 ...

  2. OMnet++ 初学者教程 第一节 入门

    第1部分-入门 1.1模型 首先,让我们从一个包含两个节点的"network"开始.节点将做一些简单的事情:一个是节点将创建一个数据包,而两个节点将继续来回传递相同的数据包.我们将 ...

  3. Spring Security Oauth2 认证(获取token/刷新token)流程(password模式)

    https://blog.csdn.net/bluuusea/article/details/80284458

  4. dubbo负载均衡策略和集群容错策略都有哪些?动态代理策略呢?

    (1)dubbo负载均衡策略 1)random loadbalance 默认情况下,dubbo是random load balance随机调用实现负载均衡,可以对provider不同实例设置不同的权重 ...

  5. 【CTF】CTFHub 技能树 彩蛋 writeup

    碎碎念 CTFHub:https://www.ctfhub.com/ 笔者入门CTF时时刚开始刷的是bugku的旧平台,后来才有了CTFHub. 感觉不论是网页UI设计,还是题目质量,赛事跟踪,工具软 ...

  6. Oracle-DG最大保护模式下,dg备库出现问题对主库有什么影响?

    一.需求 疑问?Oracle最大保护模式下,dg备库出现问题,影响主库吗? 我们都知道Oracle最大保护模式的意思是oracle不允许数据丢失,1条记录都不行! 那么备库有问题? oracle主库还 ...

  7. C语言-内存函数的实现(二)之memmove

    C语言中的内存函数有如下这些 memcpy memmove memcmp memset 下面看看memmove函数 memmove 为什么会需要memmove函数? int main() { int ...

  8. spring boot 通过feign调用api接口

    目的:远程调用服务器api,直接上步骤: 1,添加maven依赖,这是必须的: <dependency> <groupId>org.springframework.cloud& ...

  9. 1026 Table Tennis

    A table tennis club has N tables available to the public. The tables are numbered from 1 to N. For a ...

  10. CVPR2021 | 华为诺亚实验室提出Transformer in Transformer

    前言: transformer用于图像方面的应用逐渐多了起来,其主要做法是将图像进行分块,形成块序列,简单地将块直接丢进transformer中.然而这样的做法忽略了块之间的内在结构信息,为此,这篇论 ...