推荐手机网站建设/百度搜索引擎官网

推荐手机网站建设,百度搜索引擎官网,怎么做win10原版系统下载网站,基于cms系统网站的建设泛型与集合(一) 泛型泛型的核心作用泛型类型(类)定义与使用类型参数命名约定泛型方法定义与调用与泛型类的区别通配符上界通配符下界通配符有界类型参数类型擦除集合框架核心接口Collection 接口Map 接口Collection 接口操作的常用方法基本操作批量操作数组操作流操作方法L…

泛型与集合(一)

  • 泛型
    • 泛型的核心作用
    • 泛型类型(类)
      • 定义与使用
      • 类型参数命名约定
    • 泛型方法
      • 定义与调用
      • 与泛型类的区别
    • 通配符
      • 上界通配符
      • 下界通配符
    • 有界类型参数
    • 类型擦除
  • 集合框架
    • 核心接口
      • Collection 接口
      • Map 接口
    • Collection 接口操作的常用方法
      • 基本操作
      • 批量操作
      • 数组操作
      • 流操作方法
  • List 接口及实现类
    • List 接口
      • List 接口概述
      • List 接口常用方法
      • List 接口与 Collections 接口
    • ArrayList 类
      • 特点与实现原理
      • 构造方法
    • 遍历集合元素
      • 使用简单的 for 循环
      • 使用增强的 for 循环
      • 使用迭代器
      • 双向迭代器
    • 数组转换为 List 对象
      • 使用 Arrays.asList() 方法
      • 手动遍历数组添加到 ArrayList
      • 使用 Java 8 Stream API
      • 基本类型数组转换为 List
    • Vector 类和 Stack 类
      • Vector 类
        • 概述
        • 常用方法
      • Stack 类
        • 概述
        • 常用方法

泛型

泛型的核心作用

泛型是 Java 实现代码复用和类型安全的重要机制。它允许在类、接口和方法中定义类型参数,使代码能处理多种数据类型,同时避免强制类型转换和运行时类型错误。例如,在集合中使用泛型,可确保集合中元素类型的一致性,在编译阶段就能检测出类型错误,增强代码的健壮性和可读性。

泛型类型(类)

定义与使用

定义泛型类时,通过尖括号 声明类型参数,T 可以是类、接口、数组类型(基本数据类型需使用包装类型)。以 Box 类为例:

public class Box<T> {private T content;public void setContent(T content) {this.content = content;}public T getContent() {return content;}
}

使用时,需指定具体的类型参数。从 Java 7 开始,可使用菱形语法简化创建对象的过程:

Box<String> stringBox = new Box<>();
stringBox.setContent("Hello");
System.out.println(stringBox.getContent()); 

类型参数命名约定

类型参数命名通常使用单个大写字母作为类型参数名,常见的有 E(表示元素)、K(表示键)、V(表示值)、T(表示类型)、N(表示数字)等。遵循这些约定,能使代码更易理解。

泛型方法

定义与调用

泛型方法在方法返回值前声明类型参数 ,其作用域仅限于该方法。例如,定义一个打印数组元素的泛型方法:

public static <T> void printArray(T[] array) {for (T element : array) {System.out.print(element + " ");}System.out.println();
}

调用时,编译器会自动推断类型:

Integer[] intArr = {1, 2, 3};
printArray(intArr); 

与泛型类的区别

泛型类的类型参数作用于整个类,而泛型方法的类型参数仅在声明的方法内有效。泛型方法还可以在非泛型类中定义,增加了代码的灵活性。

通配符

上界通配符

上界通配符(<?extends T>)用于限制类型为T或其子类,增强泛型的灵活性。例如,计算列表中数字元素总和的方法:

public static double sum(List<? extends Number> list) {double sum = 0;for (Number num : list) {sum += num.doubleValue();}return sum;
}

该方法可接受 List<Integer>、List<Double> 等类型的参数。

下界通配符

下界通配符(<?super T>)限制类型为 T 或其父类。比如,向列表中添加 Integer 类型元素的方法:

public static void addNumbers(List<? super Integer> list) {list.add(1);list.add(2);
}

此方法可接受 List<Number>、List<Object> 等类型的参数。

有界类型参数

使用 extends 或 super 限制类型参数的范围。例如,定义一个计算数字平方的 Calculator 类:

public class Calculator<T extends Number> {public double square(T num) {return num.doubleValue() * num.doubleValue();}
}

类型擦除

泛型在编译后会被替换为 Object 或边界类型,运行时无法获取泛型信息。例如, List 和 List 在运行时都变为 List。这是为了保持 Java 的向后兼容性,但也带来了一些局限性,如无法在运行时根据泛型类型进行不同的处理。

集合框架

核心接口

Collection 接口

是所有集合的根接口,继承了 Iterable 接口,定义了集合的基本操作方法。它的主要子接口有 List、Set、Queue,每个子接口都有不同的特性和用途。List 是有序且可重复的集合,Set 是无序且不可重复的集合,Queue 是按特定顺序处理元素的集合。

Map 接口

用于存储键值对,与 Collection 接口并列。在 Map 中,键是唯一的,值可以重复,常用于根据键快速查找值的场景。

Collection 接口操作的常用方法

基本操作

  • 向集合中添加元素 e:boolean add(E e)
  • 从集合中删除指定的元素 o:boolean remove(Object o)
  • 返回集合中是否包含指定的元素 o:boolean contains(Object o)
  • 返回集合是否为空,即不包含元素:boolean isEmpty()
  • 返回集合中包含的元素个数:int size()
  • 返回包含所有元素的迭代器对象:Iterator iterator()
  • 从父接口继承的方法,在集合的每个元素上执行指定的操作:default void forEach(Consumer<? super T>action)

以下是这些方法的代码示例:

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.function.Consumer;public class CollectionExample {public static void main(String[] args) {// 创建一个集合对象,这里以ArrayList为例,它实现了Collection接口Collection<Integer> collection = new ArrayList<>();// 测试add方法boolean addResult = collection.add(5);System.out.println("添加元素结果: " + addResult);// 测试remove方法boolean removeResult = collection.remove(5);System.out.println("删除元素结果: " + removeResult);// 测试contains方法collection.add(10);boolean containsResult = collection.contains(10);System.out.println("集合是否包含元素: " + containsResult);// 测试isEmpty方法boolean isEmptyResult = collection.isEmpty();System.out.println("集合是否为空: " + isEmptyResult);// 测试size方法int size = collection.size();System.out.println("集合元素个数: " + size);// 测试iterator方法Iterator<Integer> iterator = collection.iterator();while (iterator.hasNext()) {Integer element = iterator.next();System.out.println("迭代器遍历元素: " + element);}// 测试forEach方法collection.add(20);collection.forEach(new Consumer<Integer>() {@Overridepublic void accept(Integer integer) {System.out.println("forEach方法操作元素: " + integer);}});}
}

批量操作

  • 将集合c中的所有元素添加到当前集合中:boolean addAll(Collection<? extends E> c)
  • 从当前集合中删除 c 中的所有元素:boolean removeAll(Collection<?> c)
  • 从当前集合中删除满足谓词的所有元素:default boolean removeIf(Predicate<? super E> filter)
  • 返回当前集合是否包含 c 中的所有元素:boolean containsAll(Collection<?> c)
  • 在当前集合中只保留指定集合 c 中的元素,其他元素删除:boolean retainAll(Collection<?> c)
  • 将集合清空:void clear()

以下是这些方法的代码示例:

import java.util.ArrayList;
import java.util.Collection;
import java.util.function.Predicate;public class CollectionBatchOperationsExample {public static void main(String[] args) {

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

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

相关文章

华为FusionCompute虚拟化平台

一、华为FusionCompute虚拟化套件介绍 华为FusionCompute虚拟化套件是业界领先的虚拟化解决方案&#xff0c;能够帮助客户带来如下的价值&#xff0c;从而大幅提升数据中心基础设施的效率。 帮助客户提升数据中心基础设施的资源利用率&#xff1b;帮助客户成倍缩短业务上线周期…

【存储中间件API】MySQL、Redis、MongoDB、ES常见api操作及性能比较

常见中间件api操作及性能比较 ☝️ MySQL crud操作✌️ maven依赖✌️ 配置✌️ 定义实体类✌️ 常用api ☝️ Redis crud操作✌️ maven依赖✌️ 配置✌️ 常用api ☝️ MongoDB crud操作✌️ maven依赖✌️ 配置文件✌️ 定义实体类✌️ MongoDB常用api ☝️ ES crud操作 ⭐️…

51单片机入门_10_数码管动态显示(数字的使用;简单动态显示;指定值的数码管动态显示)

接上篇的数码管静态显示&#xff0c;以下是接上篇介绍到的动态显示的原理。 动态显示的特点是将所有位数码管的段选线并联在一起&#xff0c;由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选&#xff…

win10系统上的虚拟机安装麒麟V10系统提示找不到操作系统

目录预览 一、问题描述二、原因分析三、解决方案四、参考链接 一、问题描述 win10系统上的虚拟机安装麒麟V10系统提示找不到操作系统&#xff0c;报错&#xff1a;Operating System not found 二、原因分析 国产系统&#xff0c;需要注意的点&#xff1a; 需要看你的系统类…

情书网源码 情书大全帝国cms7.5模板

源码介绍 帝国cms7.5仿《情书网》模板源码&#xff0c;同步生成带手机站带采集。适合改改做文学类的网站。 效果预览 源码获取 情书网源码 情书大全帝国cms7.5模板

STM32 ADC介绍(硬件原理篇)

目录 背景 AD转换器 采样与保持 量化 编码 AD转换器转换原理 DA转换原理 AD转换原理 1.逐次逼近型AD转换器 2.并联比较型AD转换器 编码器 同步D触发器和边沿D触发器 基本RS触发器 同步RS触发器 同步D触发器 边沿型D触发器&#xff08;维持-阻塞D触发器&#xff…

公网远程家里局域网电脑过程详细记录,包含设置路由器。

由于从校内迁居小区,校内需要远程控制访问小区内个人电脑,于是早些时间刚好自己是电信宽带,可以申请公网ipv4不需要花钱,所以就打电话直接申请即可,申请成功后访问光猫设备管理界面192.168.1.1,输入用户名密码登录超管(密码是网上查下就有了)设置了光猫为桥接模式,然后…

【Spring】Spring配置文件

目录 ​什么是配置文件&#xff1f; 配置文件的作用 SpringBoot配置文件 配置文件格式 配置文件的优先级 properties配置文件说明 properties基本语法 读取配置文件 properties缺点 yml配置文件说明 yml基本语法 使用yml连接数据库 yml配置不同数据类型及null 注意…

Visual Studio Code使用ai大模型编成

1、在Visual Studio Code搜索安装roo code 2、去https://openrouter.ai/settings/keys官网申请个免费的配置使用

解锁机器学习核心算法 | 支持向量机:机器学习中的分类利刃

一、引言 在机器学习的庞大算法体系中&#xff0c;有十种算法被广泛认为是最具代表性和实用性的&#xff0c;它们犹如机器学习领域的 “十大神器”&#xff0c;各自发挥着独特的作用。这十大算法包括线性回归、逻辑回归、决策树、随机森林、K - 近邻算法、K - 平均算法、支持向…

深入解析Qt事件循环

在Qt开发中&#xff0c;QApplication::exec()这行代码是每个开发者都熟悉的“魔法咒语”。为什么GUI程序必须调用它才能响应操作&#xff1f;为何耗时操作会导致界面冻结&#xff1f;本文将以事件循环为核心&#xff0c;揭示Qt高效运转的底层逻辑&#xff0c;探讨其设计哲学与最…

未来游戏:当人工智能重构虚拟世界的底层逻辑

未来游戏&#xff1a;当人工智能重构虚拟世界的底层逻辑 在《赛博朋克2077》夜之城的霓虹灯下&#xff0c;玩家或许已经注意到酒吧里NPC开始出现微表情变化&#xff1b;在《艾尔登法环》的开放世界中&#xff0c;敌人的战术包抄逐渐显露出类人智慧。这些细节预示着游戏产业正站…

deepseek-v3在阿里云和腾讯云的使用中的差异

随着deepseek在各大云商上线&#xff0c;试用了下阿里云和腾讯云的deepseek服务&#xff0c;在回答经典数学问题9.9和9.11谁大时&#xff0c;发现还是有差异的。将相关的问题记录如下。 1、问题表现 笔者使用的openai的官方sdk go-openai。 因本文中测验主要使用阿里云和腾讯…

宝塔面板开始ssl后,使用域名访问不了后台管理

宝塔面板后台开启ssl访问后&#xff0c;用的证书是其他第三方颁发的证书 再使用 域名/xxx 的形式&#xff1a;https://域名:xxx/xxx 访问后台&#xff0c;结果出现如下&#xff0c;不管使用 http 还是 https 的路径访问都进不后台管理 这个时候可以使用 https://ip/xxx 的方式来…

开发板部署|RK3588部署DeepSeek-1.5B

前言 在 RK3588 上部署大模型可以显著提升计算效率、节能、加速推理过程&#xff0c;并实现本地化推理&#xff0c;适合各种边缘计算应用&#xff0c;如智能设备、自动驾驶、工业机器人、健康监测等领域。此外&#xff0c;RK3588 配备了强大的 NPU&#xff08;神经网络处理单元…

UDP与TCP

用UDP一定比用TCP快吗&#xff1f; 假设我们需要在a电脑的进程发一段数据到b电脑的进程我们可以选择使用TCP或UDP协议进行通信。 对于TCP这样的可靠性协议每次消息发出后都能明确知道对方有没有收到&#xff0c;就像打电话一样&#xff0c;只要“喂喂"两下对方就能回你个…

软件测试:定义和实质

软件缺陷的定义&#xff1a; 未实现说明书要求的功能出现了说明书指明不应出现的错误实现了说明书未提到的功能未实现说明书没有明确提出但应该实现的目标软件难以理解&#xff0c;不易使用&#xff0c;运行缓慢 或者从测试员客户会认为不好的。 软件缺陷的原因&#xff1a; …

路由基础 | 路由引入实验 | 不同路由引入方式存在的问题

注&#xff1a;本文为 “路由基础 | 路由表 | 路由引入” 相关文章合辑。 未整理去重。 路由基本概念 1—— 路由表信息、路由进表以及转发流程、最长掩码匹配原则 静下心来敲木鱼已于 2023-11-26 14:06:22 修改 什么是路由 路由就是指导报文转发的路径信息&#xff0c;可以…

更高效实用 vscode 的常用设置

VSCode 可以说是文本编辑神器, 不止程序员使用, 普通人用其作为文本编辑工具, 更是效率翻倍. 这里分享博主对于 VSCode 的好用设置, 让 VSCode 如虎添翼 进入设置 首先进入设置界面, 后续都在这里进行配置修改 具体设置 每项配置通过搜索关键字, 来快速定位配置项 自动保存…

本地部署DeepSeek

1、下载ollama 浏览器输入ollama&#xff0c;打开ollama网站&#xff0c;选择版本下载 可以使用迅雷下载 打开迅雷&#xff0c;复制网址 2、安装ollama ollama下载完成之后&#xff0c;安装 3、查看ollama版本 Win R&#xff0c;cmd ollama -v 查看ollama版本 4、下载De…