Java 迭代器、Object类、泛型、序列化

一、Java Iterator:

Java Iterator(迭代器)是用于遍历集合的接口。Java Iterator提供统一的方式来访问集合中的元素,而不需要了解底层集合的具体实现细节。

Java Iterator接口定义的几个方法:next() - 返回迭代器的下一个元素,并将迭代器的指针移到下一个位置;hasNext() - 用于判断集合中是否还有下一个元素可以访问;remove() - 从集合中删除迭代器最后访问的元素(可选操作)。

 Iterator类位于java.util包中,引入Iterator类的方式:

import java.util.Iterator; // 引入 Iterator 类

   获取一个迭代器,使用iterator()方法。示例:

// 引入 ArrayList 和 Iterator 类
import java.util.ArrayList;
import java.util.Iterator;

public class RbTest {
    public static void main(String[] args) {

        // 创建集合
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("Google");
        sites.add("Taobao");
        sites.add("Zhihu");

        // 获取迭代器
        Iterator<String> it = sites.iterator();

        // 输出集合中的第一个元素
        System.out.println(it.next());
    }
}

循环集合元素:

// 输出集合中的所有元素
        while(it.hasNext()) {
            System.out.println(it.next());
        }

删除元素:

Iterator<Integer> it = numbers.iterator();
        while(it.hasNext()) {
            Integer i = it.next();
            if(i < 10) {  
                it.remove();  // 删除小于 10 的元素
            }
        }
        System.out.println(numbers);

二、Java Object:

Java Object类是所有类的父类,子类可以使用Object的所有方法。Object类位于java.lang包中,编译时自动导入。

Object类的构造函数:

序号

构造方法 & 描述

1

Object()

构造一个新对象。

Object类的方法:

序号

方法 & 描述

1

protected Object clone()

创建并返回一个对象的拷贝

2

boolean equals(Object obj)

比较两个对象是否相等

3

protected void finalize()

当 GC (垃圾回收器)确定不存在对该对象的有更多引用时,由对象的垃圾回收器调用此方法。

4

Class<?> getClass()

获取对象的运行时对象的类

5

int hashCode()

获取对象的 hash 值

6

void notify()

唤醒在该对象上等待的某个线程

7

void notifyAll()

唤醒在该对象上等待的所有线程

8

String toString()

返回对象的字符串表示形式

9

void wait()

让当前线程进入等待状态。直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法。

10

void wait(long timeout)

让当前线程处于等待(阻塞)状态,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者超过参数设置的timeout超时时间。

11

void wait(long timeout, int nanos)

与 wait(long timeout) 方法类似,多了一个 nanos 参数,这个参数表示额外时间(以纳秒为单位,范围是 0-999999)。 所以超时的时间还需要加上 nanos 纳秒。。

三、Java 泛型:

Java 泛型提供了编译时类型安全检测机制,允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,即所操作的数据类型被指定为一个参数。

定义泛型方法的规则:

◆ 所有泛型方法声明都有一个类型参数声明部分(由尖括号分隔),该类型参数声明部分在方法返回类型之前。

◆ 每一个类型参数声明部分包含一个或多个类型参数,参数间用逗号隔开。一个泛型参数,也被称为一个类型变量,是用于指定一个泛型类型名称的标识符。

◆ 类型参数能被用来声明返回值类型,并且能作为泛型方法得到的实际参数类型的占位符。

◆ 泛型方法体的声明和其他方法一样。注意类型参数只能代表引用型类型,不能是原始类型(像 int、double、char 等)

泛型标记符:

E - Element (在集合中使用,因为集合中存放的是元素)

T - Type(Java 类)

K - Key(键)

V - Value(值)

N - Number(数值类型)

? - 表示不确定的 java 类型

类型通配符:

◆ 类型通配符一般是使用?代替具体的类型参数。

◆ 类型通配符上限通过形如List来定义。

◆ 类型通配符下限通过形如 List<? super Number> 来定义,表示类型只能接受 Number 及其上层父类类型,如 Object 类型的实例

四、Java 序列化:

Java 序列化是将对象转换为字节流的过程,以便将对象保存在磁盘上,将其传输到网络上,或者将其存储在内存中,以后再进行反序列化,将字节流重新转换为对象。Java 序列化是通过java.io.Serializable接口来实现。

import java.io.Serializable;

public class MyClass implements Serializable {
     // 类的成员和方法
}

序列化对象:ObjectOutputStream 类用来序列化一个对象。

反序列化对象:ObjectInputStream类来反序列化一个对象。

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

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

相关文章

快来瞧瞧这样制作出来的电子画册,还便于分享宣传呢!

说起电子画册制作&#xff0c;很多人都不知道从何入手。与传统纸质画册相比&#xff0c;电子画册最大的优点是便于传阅&#xff0c;通过微信、QQ等社交平台都能进行转发和分享。而且内容的排版基本上和纸质画册一致&#xff0c;不同的是&#xff0c;无论图片还是文字都可以赋予…

WPS字母上方打出横杠(-)或尖角(^)

例子1&#xff1a;y上方插入横杠 点击插入点击公式下拉点击“插入新公式”点击“导数符号”选择“横杠”或“顶线”即可输入y&#xff0c;然后上方将出现横杠 例子2&#xff1a;y上方插入^ 点击插入点击符号下拉点击“其他符号”子集选择“拉丁语扩展-A”找到相应符号

【数据结构算法(二)】链表总结

&#x1f308;键盘敲烂&#xff0c;年薪30万&#x1f308; 目录 普通单向链表 双向链表 带哨兵的链表 环形链表 ⭐双向带头带环链表的实现⭐ ⭐链表基础OJ⭐ 普通单向链表 结点结构&#xff1a;只有val 和 next指针 初始时&#xff1a;head null; 双向链表 指针&…

深度学习在图像识别中的革命性应用

深度学习在图像识别中的革命性应用标志着计算机视觉领域的重大进步。以下是深度学习在图像识别方面的一些革命性应用&#xff1a; 1. **卷积神经网络&#xff08;CNN&#xff09;的崭新时代**&#xff1a; - CNN是深度学习在图像识别中的核心技术&#xff0c;通过卷积层、池化…

16.添加脚注footnote

在 LaTeX 中&#xff0c;您可以使用 \footnote 命令来添加脚注&#xff0c;其中包含您想要引用的网址。同时&#xff0c;为了使网址在文本中可点击&#xff0c;您可以使用 hyperref 宏包。 首先&#xff0c;在文档导言部分添加 hyperref 宏包&#xff1a; \usepackage{hyperr…

分布式锁防重复提交

参考博客 Aspect Component public class NotRepeatedSubmitAspect {private static final String LOCK_REPEATED_SUBMIT "lock_repeated_submit:";Autowiredprivate RedissonClient redissonClient;Around("annotation(notRepeatedSubmit)")public Obje…

微信小程序手写滑动tab

微信小程序手写滑动tab index.wxml <view class"tab-bar"> <scroll-view scroll-x class"tab-scroll"> <block wx:for"{{tabs}}" wx:key"index"> <view class"tab-item {{currentIndex index ? acti…

jvs-智能bi(自助式数据分析)11.21更新功能上线

jvs智能bi更新功能 新增: 1.字段设置节点新增自定义时间格式功能&#xff1b; 自定义功能允许用户根据需要自定义日期和时间字段的显示格式&#xff0c;为用户提供了更大的灵活性和便利性 2.图表时间搜索条件新增向下兼容模式&#xff1b; 时间搜索条件的向下兼容模式允许用…

超级会员卡积分收银系统源码 会员卡+积分商城+收银功能+多门店系统 附带完整的搭建教程

线上线下的融合已经成为趋势。在这个过程中&#xff0c;会员卡积分收银系统成为了许多企业不可或缺的一部分。该系统以超级会员卡为基础&#xff0c;结合积分商城、收银功能以及多门店系统&#xff0c;为企业提供了一站式的解决方案&#xff0c;帮助企业实现线上线下会员一体化…

linux上java解加密(AES CBC)异常

linux上java解加密(AES/CBC)异常&#xff1a;java.lang.SecurityException: JCE cannot authenticate the provider BC办法 用mapreduce做数据清洗的时候&#xff0c;需要对数据进行解密&#xff0c;加密方法是&#xff1a;AES/CBC/PKCS7Padding&#xff0c;由于java本身不支持…

11.数据公式中使用2个 $$ a =b $$,是什么意思?

在 LaTeX 中&#xff0c;双美元符号 $$ 用于进入和退出独立的数学模式&#xff0c;也就是数学公式模式。在 $$ 中的文本将被视为数学公式&#xff0c;并以数学排版的方式显示。 具体地说&#xff0c;$$ 的使用是为了在文档中创建居中显示的独立数学公式。这意味着公式将单独占…

汽车托运汽车会产生公里数吗?

汽车托运&#xff0c;顾名思义就是把汽车放在板车上进行托运&#xff0c;既然是被托运&#xff0c;那为什么还会产生公里数呢?是被司机私用了吗?还是被当成租赁工具租借出去了呢? 其实不然&#xff0c;回到托运流程里&#xff0c;特别是大板车&#xff0c;我们的线路有很多需…

Android WebView中打开外部超链接无反应

什么是外部超链接&#xff1f; 相当于是跳转到一个新的网址页面 解决方案选择&#xff1a; 1.在WebView内部中打开外部超链接 设置setSupportMultipleWindows为false即可 webView.settings.setSupportMultipleWindows(false)2.打开系统浏览器打开新页面 设置setSupportMul…

最全分布式面试题整理

什么是分布式系统&#xff1f; 分布式系统是由多台计算机通过网络互相连接&#xff0c;共同完成任务的系统。这些计算机协同工作&#xff0c;共享资源和信息&#xff0c;以提高整体性能和可靠性。分布式系统的设计旨在解决单一计算机系统所面临的性能瓶颈和可靠性问题&#xf…

使用CSS渲染不同形状

本文只是用来记录自己遇到的图形 1.图形一 2.图形二 3.图形三 4.图形四 5.图形五

Java 网络编程、e-mail、多线程编程

一、Java 网络编程&#xff1a; 网络编程时指编写运行在多个设备的程序&#xff0c;这些设备通过网络连接起来。 Java.net包中的J2SE的API包含有类和接口&#xff0c;提供低层次的通信细节。 java.net 包中提供了两种常见的网络协议的支持&#xff1a; TCP&#xff1a;TCP&…

Windows安装Linux双系统教程

&#x1f4bb;Windows安装Linux双系统教程 &#x1f959;资源准备&#x1f354;启动盘制作&#x1f373;分区&#x1f32d;重启电脑&#x1f371;安装Ubuntu &#x1f959;资源准备 &#x1f4a1;下载ubuntu系统、refus启动盘制作程序&#x1f448; &#x1f4a1;一个U盘 &am…

“探秘淘宝商品详情接口:获取电商数据的新途径“

淘宝商品详情接口的技术贴 一、概述 淘宝商品详情接口&#xff0c;也称为淘宝商品详情API&#xff0c;是一个用于获取淘宝商品详情的接口。它可以帮助开发者快速获取淘宝商品信息&#xff0c;从而构建自己的电商应用程序。本文将详细介绍淘宝商品详情接口的使用方法、技术细节…

源码编译CEF(branch=6045)+mp4+mp3笔记

接触Chromium已经过去多年了&#xff0c;一直都依赖别人编译的库&#xff0c;最近想自己整一个&#xff0c;所以有了这篇笔记。 环境要求&#xff1a;WIN10&#xff0c;内存16G&#xff0c;固态硬盘空间200G,VS2022&#xff0c;科学上网&#xff08;具体配置我这边不需要&#…

问题:vue2修改对象属性值,数据改变,但是页面视图不更新

目的&#xff1a;修改对象node的child属性的值&#xff0c;页面响应式变化 问题&#xff1a;数据是变了&#xff0c;但是页面没反应&#xff1b;在页面中用v-if绑定这个值&#xff0c;数据变了&#xff0c;视图也是不更新 错误写法&#xff1a; this.node.child ""…