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类来反序列化一个对象。

相关推荐
聂 可 以2 分钟前
在SpringBoot项目中利用Redission实现布隆过滤器(布隆过滤器的应用场景、布隆过滤器误判的情况、与位图相关的操作)
java·spring boot·redis
Bruce小鬼2 分钟前
最新版本TensorFlow训练模型TinyML部署到ESP32入门实操
人工智能·python·tensorflow
长安初雪11 分钟前
Java客户端SpringDataRedis(RedisTemplate使用)
java·redis
白如意i19 分钟前
如何在 Ubuntu 16.04 服务器上安装 Python 3 并设置编程环境
linux·python·ubuntu
繁依Fanyi31 分钟前
使用 Spring Boot + Redis + Vue 实现动态路由加载页面
开发语言·vue.js·pytorch·spring boot·redis·python·算法
aloha_78937 分钟前
B站宋红康JAVA基础视频教程(chapter14数据结构与集合源码)
java·数据结构·spring boot·算法·spring cloud·mybatis
尘浮生1 小时前
Java项目实战II基于Java+Spring Boot+MySQL的洗衣店订单管理系统(开发文档+源码+数据库)
java·开发语言·数据库·spring boot·mysql·maven·intellij-idea
鸽芷咕1 小时前
【Python报错已解决】xlrd.biffh.XLRDError: Excel xlsx file; not supported
开发语言·python·机器学习·bug·excel
猿饵块1 小时前
cmake--get_filename_component
java·前端·c++
Unicorn建模1 小时前
2024“华为杯”中国研究生数学建模竞赛(E题)深度剖析|数学建模完整过程+详细思路+代码全解析
python·算法·数学建模