Java---Collection讲解(一)

文章目录

    • 1. 集合体系结构
    • 2. Collection集合概述和使用
    • 3. Collection集合的遍历
    • 4. 小案例分析
    • 5. List集合概述和特点
    • 6. List集合的特有方法
    • 7. 小案例分析


1. 集合体系结构

 集合体系结构如下所示。在实现时我们需要使用接口的具体实现类。

在这里插入图片描述

2. Collection集合概述和使用

 1. Collection集合概述:(1) 是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素。 (2) JDK不提供此接口的任何直接实现,它提供更具体的子接口Set和List实现。

 2. 创建Collection集合的对象:(1) 多态的方式。 (2) 具体的实现类ArrayList。

 3. Collection集合常用方法:

方法名说明
boolean add(E e)添加元素
boolean remove(Object o)从集合中移除指定元素
void clean()清空集合元素
boolean contains(Object o)判断集合中是否存在指定元素
boolean isEmpty()判断集合是否为空
int size()集合的长度,也就是集合中元素的个数
import java.util.ArrayList;
import java.util.Collection;public class CollectionDemo {public static void main(String[] args) {Collection<String> c=new ArrayList<String >();c.add("hello");c.add("Java");c.add("难学");System.out.println(c);//[hello, Java, 难学]System.out.println(c.size());//3c.remove("hello");System.out.println(c);//[Java, 难学]System.out.println(c.contains("难学"));//truec.clear();System.out.println(c);//[]System.out.println(c.isEmpty());//true}
}

3. Collection集合的遍历

 1. Iterator:迭代器,集合的专用遍历方式。迭代器是通过集合的iterator()方法得到的,所以说它是依赖与集合而存在的。

 2.其中的常用方法:(1) E next():返回迭代中的下一个元素。(2) boolean hasNet():如果迭代具有更多元素,则返回True。

 3. 代码块举例:

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;public class CollectionDemo {public static void main(String[] args) {Collection<String> c=new ArrayList<String >();c.add("hello");c.add("Java");c.add("难学");Iterator<String> it=c.iterator();System.out.println(it.next()); //helloSystem.out.println(it.next()); //JavaSystem.out.println(it.next()); //难学//System.out.println(it.next()); 会报错if(it.hasNext()){  //会判断有没有元素,没有就不执行System.out.println(it.next());//没有返回}}
}

4. 小案例分析

在这里插入图片描述

public class Student {private String name;private int age;public Student(){}public Student(String name,int age){this.name=name;this.age=age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;public class Demo {public static void main(String[] args) {Collection<Student> c=new ArrayList<Student>();Student s1=new Student("张三",18);Student s2=new Student("李四",19);Student s3=new Student("王五",20);c.add(s1);c.add(s2);c.add(s3);Iterator<Student> it=c.iterator();while(it.hasNext()){Student s=it.next();System.out.println(s.getName()+" 年龄为:"+s.getAge());//张三 年龄为:18//李四 年龄为:19//王五 年龄为:20}}
}

5. List集合概述和特点

 1. List集合概述:(1) 有序集合(也称为序列),用户可以精确控制列表中每个元素的插入位置,用户可以通过整数索引访问元素,并搜索列表中的元素。 (2) 与Set集合不同,列表通常允许重复的元素。

 2. List集合特点:(1)有序:存储和取出的元素顺序一致。 (2) 可重复:存储的元素可以重复。

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;public class Demo {public static void main(String[] args) {List<String> c=new ArrayList<String>();c.add("s1");c.add("s2");c.add("s3");c.add("s3");Iterator<String> it=c.iterator();while(it.hasNext()){System.out.println(it.next());//s1//s2//s3//s3}}
}

6. List集合的特有方法

方法名说明
void add(int index, E element)在此集合中的指定位置插入指定的元素
E remove(int index)删除指定索引处的元素,返回被删除的元素
E set(int index, E element)修改指定索引处的元素,返回被修改的元素
E get(int index)返回指定索引处的元素
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;public class Demo {public static void main(String[] args) {List<String> c=new ArrayList<String>();c.add("s1");c.add("s2");c.add("s3");c.add("s3");Iterator<String> it=c.iterator();while(it.hasNext()){System.out.println(it.next());//s1//s2//s3//s3}c.add(1,"插入");System.out.println(c);//输出:[s1, 插入, s2, s3, s3]System.out.println(c.remove(1));//输出:插入System.out.println(c);//输出:[s1, s2, s3, s3]System.out.println(c.set(1,"s22"));//输出:s2System.out.println(c);//输出:[s1, s22, s3, s3]System.out.println(c.get(3));//输出:s3}
}

7. 小案例分析

在这里插入图片描述

package BliJava;public class Student {private String name;private int age;public Student(){}public Student(String name,int age){this.name=name;this.age=age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
public class Demo {public static void main(String[] args) {List<Student> list=new ArrayList<Student>();Student s1=new Student("张三",18);Student s2=new Student("李四",19);Student s3=new Student("王五",20);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.getName()+" "+s.getAge());}//第二种迭代方式for(int i=0;i<list.size();i++){Student s=list.get(i);System.out.println(s.getName()+" "+s.getAge());}//张三 18//李四 19//王五 20//张三 18//李四 19//王五 20}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/277818.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Golang学习之路一开山篇

Golang学习之路一开山篇 初识 Golang 我第一次接触 Golang 是在2016年, 当时在深圳工作, 项目需要用Golang, 当时在犹豫要不要学还是走, 毕竟Java开发搞了很多年了, 说放弃还是有难度的, 其实也不是放弃Java, 说不定其他项目还是要使用Java. 在领导的再三劝说下, 开启了Golan…

CentOS 防火墙管理及使用的redis基本常用命令

文章目录 防火墙管理使用systemctl管理防火墙启动、关闭使用firewalld-cmd配置访问防火墙策略firewalld配置文件修改限制来源IP docker使用 redis 防火墙管理 需要关闭防火墙或者开启对应端口 使用systemctl管理防火墙启动、关闭 启动防火墙&#xff1a; systemctl start fi…

03进程基础-学习笔记

Process 进程 进程为操作系统的基本调度单位&#xff0c;占用系统资源(cpu,内存)完成特定任务&#xff0c;所有说进程是操作系统的标准执行单元 进程与程序的差别 程序是静态资源&#xff0c;存储与电脑磁盘中(disk磁盘资源)程序执行后会创建进程&#xff0c;负责完成功能&a…

5.1 Linux SSH 服务

1、Telnet 传统的远程连接管理基本上都采用telnet&#xff0c;但是telnet在本质上都是不安全的&#xff0c;因为它们在网络上用明文传送口令和数据&#xff0c;别有用心的人非常容易就可以截获这些口令和数据。而且&#xff0c;这些服务程序的安全验证方式也是有其弱点的&…

基于CNN+数据增强+残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)+数据集+模型(四)

系列文章目录 基于CNN数据增强残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)数据集模型&#xff08;一&#xff09; 基于CNN数据增强残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)数据集模型&#xf…

jmeter,断言:响应断言、Json断言

一、响应断言 接口A请求正常返回值如下&#xff1a; {"status": 10013, "message": "user sign timeout"} 在该接口下创建【响应断言】元件&#xff0c;配置如下&#xff1a; 若断言成功&#xff0c;则查看结果树的接口显示绿色&#xff0c;若…

【期末复习向】n元gram的应用

当 n 1 时&#xff0c; 即出现 在 第 i 位 上 的基 元 w i 独 立于 历 史 。 一元文法也 被 写 为 uni-gram 或 monogram&#xff1b; 当 n 2 时 , 2-gram ( bi-gram ) 被称 为 1 阶 马 尔 可夫 链&#xff1b; 当 n 3 时 , 3-gram( tri-gram ) 被称为 2 阶马尔 可 夫 链 &am…

平面腔体谐振计算与仿真

PCB的电源网络是由电介质材料隔开的两个平行金属板所组成&#xff0c;可以通过以下的3种方法对其谐振模式进行分析&#xff1a; 1. 基于腔体模型的计算&#xff1b; 2. 基于SPICE等效电路&#xff1b; 3. 基于全波数值电磁算法的3D模型。 设计得当的前提下&#xff0c;上述3种方…

win10上使用pyinstaller工具打包python后在win7无法运行(运行报错)

问题现象 win10中使用pyinstaller工具打包python为exe后&#xff0c;在win7上运行报错&#xff1a; 无法启动此程序&#xff0c;因为计算机中丢失api-ms-win-crt-process-l1-1-0.dll。尝试重新安装该程序以解决此问题。或 无法启动此程序&#xff0c;因为计算机中丢失api-ms…

保障线程安全性:构建可靠的多线程应用

目录 引言 为什么线程安全性如此重要&#xff1f; 1. 竞态条件&#xff08;Race Conditions&#xff09; 2. 死锁&#xff08;Deadlocks&#xff09; 3. 数据竞争&#xff08;Data Races&#xff09; 4. 内存可见性&#xff08;Memory Visibility&#xff09; 面临的挑战…

vue3 使用antd 报错Uncaught TypeError--【已解决】

问题现象 使用最基本的 ant-design-vue 按钮demo 都报错 报错文字如下 Uncaught TypeError: Cannot read properties of undefined (reading value)at ReactiveEffect.fn (ant-design-vue.js?v597f5366:6693:87)at ReactiveEffect.run (chunk-K2VKR2AM.js?v25c381c3:461:…

分类预测 | GASF-CNN格拉姆角场-卷积神经网络的数据分类预测

分类预测 | GASF-CNN格拉姆角场-卷积神经网络的数据分类预测 目录 分类预测 | GASF-CNN格拉姆角场-卷积神经网络的数据分类预测分类效果基本描述模型描述程序设计参考资料 分类效果 基本描述 1.GASF-CNN格拉姆角场-卷积神经网络的数据分类预测&#xff08;完整源码和数据) 2.自…