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

Java Iterator

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

获取 Iterator

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

java 复制代码
// 导入 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() 方法遍历集合:

java 复制代码
while (it.hasNext()) {
    String car = it.next();
    System.out.println(car);
}

删除元素

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

java 复制代码
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

使用包装类

创建包装对象

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

java 复制代码
Integer myInt = new Integer(5);
Double myDouble = new Double(5.99);
Character myChar = new Character('A');

获取值

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

java 复制代码
int intValue = myInt.intValue();
double doubleValue = myDouble.doubleValue();
char charValue = myChar.charValue();

其他方法

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

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

自动装箱和拆箱

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

例如:

java 复制代码
// 自动装箱
int x = 10;
Integer y = x; // 隐式将 int 转换为 Integer

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

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

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

建议:

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

注意:

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

最后

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

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

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

相关推荐
&木头人&1 分钟前
java 使用ZooKeeper实现分布式锁
java·分布式·java-zookeeper
醉颜凉2 分钟前
ZooKeeper 的3种部署模式
java·分布式·zookeeper·面试·集群模式·单机模式·伪集群模式
Keep striving33 分钟前
SpringAOP使用详解
java·开发语言·spring·junit·maven
老肖相当外语大佬39 分钟前
DDD是软件工程的第一性原理?
java·ddd·领域驱动设计·dotnet·软件设计
Czi橙1 小时前
深刻理解JDK中线程池的使用
java·spring·jdk·多线程·并发编程·juc
武子康1 小时前
大数据-92 Spark 集群 SparkRDD 原理 Standalone详解 ShuffleV1V2详解 RDD编程优化
java·大数据·分布式·spark·scala
武子康1 小时前
大数据-91 Spark 集群 RDD 编程-高阶 RDD广播变量 RDD累加器 Spark程序优化
java·大数据·分布式·spark·scala
NPE~1 小时前
Go Convey测试框架入门(go convey & gomonkey)
开发语言·后端·golang·测试框架·convey·gomonkey
Lill_bin1 小时前
JAVA面试题--ES
java·开发语言·数据库·spring boot·后端
凌虚(失业了求个工作)1 小时前
图解计算机网络:一条 HTTP 请求的网络拓扑之旅
前端·网络·后端·http·架构