首页 > 编程语言 >Java 包装类:原始数据类型与迭代器

Java 包装类:原始数据类型与迭代器

时间:2024-03-12 21:11:06浏览次数:28  
标签:Java 迭代 Iterator 包装 集合 Integer 原始数据

Java Iterator

Iterator 接口提供了一种迭代集合的方法,即顺序访问集合中的每个元素。它支持 hasNext()next() 方法,用于检查是否存在下一个元素以及获取下一个元素。

获取 Iterator

可以使用集合的 iterator() 方法获取 Iterator 实例:

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

public class Main {
    public static void main(String[] args) {
        // 创建一个 ArrayList
        ArrayList<String> cars = new ArrayList<>();
        cars.add("Volvo");
        cars.add("BMW");
        cars.add("Ford");
        cars.add("Mazda");

        // 获取 Iterator
        Iterator<String> it = cars.iterator();
    }
}

遍历集合

可以使用 hasNext()next() 方法遍历集合:

while (it.hasNext()) {
    String car = it.next();
    System.out.println(car);
}

删除元素

可以使用 Iteratorremove() 方法从集合中删除元素:

while (it.hasNext()) {
    String car = it.next();
    if (car.equals("Volvo")) {
        it.remove();
    }
}

注意: 在使用 Iterator 删除元素时,不要使用集合的 for 循环或 for-each 循环,因为这会导致集合大小发生变化,并可能导致 Iterator 出现异常。

Iterator 是 Java 中用于遍历集合的强大工具。它提供了灵活的迭代方式,并支持元素的删除。

Iterator 的优势:

  • 灵活的迭代方式
  • 支持元素的删除
  • 可用于各种集合

Iterator 的劣势:

  • 使用时需要注意集合大小变化
  • 可能比 for 循环或 for-each 循环效率低

建议:

  • 当需要灵活的迭代方式或需要删除元素时,使用 Iterator
  • 当只需要遍历集合并读取元素时,可以使用 for 循环或 for-each 循环。

Java 包装类

Java 包装类为原始数据类型(如 intboolean 等)提供了对象表示形式。这使得将原始数据类型与需要对象的 API 一起使用成为可能。

原始类型与包装类

下表列出了 Java 中的原始类型及其对应的包装类:

原始类型 包装类
byte Byte
short Short
int Integer
long Long
float Float
double Double
boolean Boolean
char Character

使用包装类

创建包装对象

可以使用包装类的构造函数创建包装对象,并将原始值作为参数传递:

Integer myInt = new Integer(5);
Double myDouble = new Double(5.99);
Character myChar = new Character('A');

获取值

可以使用包装类的 xxxValue() 方法获取其对应的原始值:

int intValue = myInt.intValue();
double doubleValue = myDouble.doubleValue();
char charValue = myChar.charValue();

其他方法

包装类还提供了其他一些方法,例如:

  • toString(): 将包装对象转换为字符串
  • equals(): 比较两个包装对象是否相等
  • hashCode(): 返回包装对象的哈希码

自动装箱和拆箱

从 Java 5 开始,自动装箱和拆箱允许将原始类型隐式转换为包装类,反之亦然。

例如:

// 自动装箱
int x = 10;
Integer y = x; // 隐式将 int 转换为 Integer

// 拆箱
Integer z = 20;
int w = z; // 隐式将 Integer 转换为 int

Java 包装类提供了将原始数据类型用作对象的方法。它们在许多场景下都很有用,例如:

  • 将原始数据类型与需要对象的 API 一起使用
  • 将原始数据类型存储在集合中
  • 使用包装类提供的额外方法

建议:

  • 在需要将原始数据类型用作对象时使用包装类。
  • 了解自动装箱和拆箱机制,以便更好地使用包装类。

注意:

  • 虽然自动装箱和拆箱很方便,但它们可能会导致一些性能问题。
  • 在某些情况下,例如需要精确控制内存使用时,最好避免使用自动装箱和拆箱。

最后

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:Let us Coding,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎 点赞、收藏、关注

标签:Java,迭代,Iterator,包装,集合,Integer,原始数据
From: https://www.cnblogs.com/xiaowange/p/18069298

相关文章

  • java美食城网站设计(ssm)
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:在数字化时代,互联网已成为人们获取信息、交流和消费的重要平台。美食作为人类文化的重要组成部分,不仅承载着丰富的地域特色和历史传统,也是人们日常生活中......
  • day09Java学习打卡:嵌套循环
    //循环语句综合例题说明:1.不在循环条件部分限制次数的结构:for(;;)或while(true)2.结束循环有几种方式: (1)在循环条件部分返回false (2)在循环体中,执行break从键盘读入个数不确定的整数,并判断读入的正数和负数的个数,输入为0时结束程序。最简单“无限”循环格式:while(true)......
  • Java是值传递还是引用传递?
    1、典型回答值传递(Passbyvalue)和引用传递(Passbyreference)是关于参数传递方式的两个概念值传递:将传递参数的值,复制一份到方法的参数中。换句话说,值传递的是原始数据的一个副本,而不是原始数据本身引用传递:将实际参数的引用(内存地址)传递给方法,这意味着方法内部对参数的修改......
  • 【华为OD机试】真题B卷-分班问题(JAVA)
    华为OD机试真题汇总目录  【华为OD机试】真题汇总A+B+C+D券(Python实现)  【华为OD机试】真题汇总A+B+C+D卷(JAVA实现)  【华为OD机试】真题汇总A+B+C+D卷(C++实现)一、题目题目描述:幼儿园两个班的小朋友在排队时混在了一起,每位小朋友都知道自己是否与前面一位小......
  • 01-Java程序基础
    标识符与变量标识符标识符可以标志:类名,方法名,接口名,常量名命名规则:只能由字母,数字,下划线,$组成不能以数字开头关键字不能做标识符标识符严格区分大小写例如:classHelloWorld{}classhelloWorld{}这两个类是完全不同的类,但如果用javac编译这个文件仅......
  • JavaEE开发环境配置(1)
    JavaEE开发环境配置(1)一、实验目的二、实验用的仪器和材料三、实验的步骤和方法四、数据记录和计算五、实验结果或结论六、总结一、实验目的(1)掌握JDK、Maven、Tomcat、Idea等开发环境的安装和配置(2)理解Servlet的基本原理(3)掌握Servlet项目的配置和运行方法二、实验......
  • java毕业设计五邑大学超市网上销售软件设计(Springboot+mysql+jdk1.8+maven3.39)
    本系统(程序+源码)带文档lw万字以上 文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:随着互联网技术的飞速发展,电子商务已经成为现代商业活动中不可或缺的一部分。特别是网上超市销售业务,它借助网络平台突破了传统购物的时间和空间限制,为消......
  • JAVA实现算法问题25匹马,找出最快的3匹,但是只有5个赛道,每次比赛只能得到5匹马的速度排
    JAVA实现算法问题25匹马,找出最快的3匹,但是只有5个赛道,每次比赛只能得到5匹马的速度排序,那么最少需要多少次比赛随机数模拟25匹马匹速度importjava.lang.reflect.Array;importjava.util.Arrays;publicclassMa{publicstaticvoidmain(String[]args){......
  • 【使用docker 搭建Java仓库 nexus 】
    yaml---apiVersion:apps/v1kind:StatefulSetmetadata:annotations:k8s.eip.work/displayName:Nexus服务k8s.eip.work/ingress:'false'k8s.eip.work/service:ClusterIPk8s.eip.work/workload:nexuslabels:k8s.eip.work/layer......
  • java018学习记录
    JavaWeb前端+后端+数据库DBDataBase数据库是一个服务,启动服务才能使用,开机自动启动,存储业务数据关系型数据库,传统数据,主要的业务数据,MySQL、Oracle、SQLServer(C#)结构复杂、性能稳定、速度较慢非关系型数据库,MongoDB、Redis结构灵活、速度快,功能有限,查询次数比......