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


Java 包装类

包装类简介

在 Java 中,每一种基本数据类型都有一个与之对应的包装类。包装类用于将基本数据类型的值封装在一个对象中。这在需要对象而不是基本数据类型的情况下非常有用,例如在集合框架中。

基本数据类型与对应的包装类

  • byte -> Byte
  • short -> Short
  • int -> Integer
  • long -> Long
  • float -> Float
  • double -> Double
  • char -> Character
  • boolean -> Boolean

自动装箱与自动拆箱

Java 5 引入了自动装箱(autoboxing)和自动拆箱(unboxing),使得基本数据类型和对应的包装类之间的转换更加便捷。

  • 自动装箱:将基本数据类型转换为包装类对象。
    int a = 10;
    Integer aObj = a; // 自动装箱
    
  • 自动拆箱:将包装类对象转换为基本数据类型。
    Integer bObj = 20;
    int b = bObj; // 自动拆箱
    

包装类常用方法

包装类提供了许多有用的方法,如解析字符串、比较值等。

  • Integer.parseInt(String s):将字符串解析为整数。
    int num = Integer.parseInt("123");
    
  • Integer.valueOf(String s):将字符串转换为 Integer 对象。
    Integer numObj = Integer.valueOf("123");
    
  • Integer.compare(int x, int y):比较两个整数。
    int result = Integer.compare(10, 20); // result < 0
    

迭代器

迭代器简介

迭代器(Iterator)是一个设计模式,用于逐一访问集合对象中的元素,而不暴露其内部结构。Java 提供了 Iterator 接口,用于遍历集合。

Iterator 接口的方法

  • boolean hasNext():如果有更多元素可迭代,则返回 true
  • E next():返回下一个元素。
  • void remove():移除迭代器返回的最后一个元素(可选操作)。

使用 Iterator 遍历集合

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class IteratorExample {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("Apple");
        list.add("Banana");
        list.add("Cherry");

        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()) {
            String element = iterator.next();
            System.out.println(element);
        }
    }
}

使用迭代器移除元素

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class RemoveElementExample {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("Apple");
        list.add("Banana");
        list.add("Cherry");

        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()) {
            String element = iterator.next();
            if (element.equals("Banana")) {
                iterator.remove();
            }
        }

        System.out.println(list); // Output: [Apple, Cherry]
    }
}

综合示例:包装类与迭代器

结合包装类与迭代器,以下是一个遍历并处理整数列表的示例:

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class WrapperIteratorExample {
    public static void main(String[] args) {
        List<Integer> intList = new ArrayList<>();
        intList.add(10);
        intList.add(20);
        intList.add(30);
        intList.add(40);

        // 遍历列表并打印每个元素的平方
        Iterator<Integer> iterator = intList.iterator();
        while (iterator.hasNext()) {
            Integer number = iterator.next();
            System.out.println("Number: " + number + ", Square: " + (number * number));
        }

        // 使用迭代器移除所有小于25的元素
        iterator = intList.iterator();
        while (iterator.hasNext()) {
            Integer number = iterator.next();
            if (number < 25) {
                iterator.remove();
            }
        }

        System.out.println("Filtered List: " + intList); // Output: [30, 40]
    }
}

这个示例展示了如何使用包装类将基本数据类型封装成对象,以及如何使用迭代器遍历和操作集合。


原文链接:codingdict.net