ArrayList类的使用及迭代器增强型for循环

本文详细介绍了ArrayList类的使用方法,包括如何添加元素、转换为数组、查找元素等操作,并对比了增强型for循环与传统for循环的区别,最后展示了如何利用迭代器进行遍历。

ArrayList类的使用

概念

ArrayList类实现了List的接口,实现了可变大变小的数组,多以在不知道具体数组的长度时使用ArrayList,同时它还包含排序、搜索等方法。它是单线程的。

使用方法

  1. add(); 向数组中添加元素。
		ArrayList<Integer> array = new ArrayList<Integer>();
        array.add(1);
        array.add(12);
        array.add(13);
        array.add(15);
        array.add(16);
        array.add(19);
        array.add(18);
        array.add(17);
        for (int i = 0; i < array.size(); i++) {
            System.out.println(array.get(i)+"\t");
        }

返回值:1 12 13 15 16 19 18 17

  1. toArray(); 将ArrayList转变为Array数组。
		ArrayList<String> as = new ArrayList<String>();
        as.add("张三");
        as.add("李四");
        as.add("王五");
        as.add("孙六");
        //将ArrayList转变为Array数组
        Object[] array = as.toArray();
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i]+"\t");
        }

返回值:张三 李四 王五 孙六

  1. contains();查找ArrayList中的元素,有的话返回true,没有则返回false。
		ArrayList<String> co = new ArrayList<String>();
        co.add("a");
        co.add("b");
        co.add("v");
        co.add("z");
        boolean s = co.contains("a");
        System.out.println(s);

返回值:true

  1. size();返回数组的长度
		ArrayList<String> co = new ArrayList<String>();
        co.add("a");
        co.add("b");
        co.add("v");
        co.add("z");
        int s = co.size();
        System.out.println(s);

返回值:4

迭代器的使用

概念

为数据容器提供了公共的操作接口,可以对数据容器进行遍历操作,如ArrayList等。

迭代器的方法

  1. hasNext();如果迭代具有更多元素,返回true。
  2. next();返回迭代中的下一个元素。

迭代器使用-遍历

		ArrayList c = new ArrayList<String>();
        c.add("123");
        c.add("456");
        c.add("789");
        c.add("987");
        c.add("654");
        c.add("321");
        Iterator i = c.iterator();
        while (i.hasNext()){
            String n =(String)i.next();
            System.out.print(n+"\t");
        }

返回值:123 456 789 987 654 321

增强型for循环的使用

与for循环的比较

增强型for循环相比于普通for循环,增强型for循环不用操作索引,对于索引不明确的素组来说遍历变得极为简单。

增强型for循环使用

for(数据类型 变量名:被遍历的集合或数组){
执行语句;
}

int[] arr={12,5,689,45,23,69,87};
//普通for循环遍历
//		for (int i = 0; i < arr.length; i++) {
//			System.out.println(arr[i]);
//		}
        for(int i: arr) {
            System.out.println(i + 1);
        }
ArrayList c = new ArrayList<String>();
        c.add("123");
        c.add("456");
        c.add("789");
        c.add("987");
        c.add("654");
        c.add("321");
//		  迭代器的遍历	
//        Iterator i = c.iterator();
//        while (i.hasNext()){
//            String n =(String)i.next();
//            System.out.print(n+"\t");
//        }
        for (Object obj:c
             ) {
            System.out.print(obj+"\t");
        }
### 使用增强型 `for` 循环遍历集合 增强型 `for` 循环(也称为 `for-each` 循环)是 Java 5 引入的一种简化集合数组遍历的语法结构。它通过隐藏迭代器的实现细节,使代码更简洁、可读性更高,适用于所有实现了 `Iterable` 接口的集合,如 `ArrayList`、`HashSet`、`LinkedList` 等。 增强型 `for` 循环的基本语法如下: ```java for (元素元素变量 : 集合或数组) { // 执行操作 } ``` 例如,使用增强型 `for` 循环遍历一个 `ArrayList` 并打印每个元素: ```java import java.util.ArrayList; public class ForEachExample { public static void main(String[] args) { ArrayList<String> names = new ArrayList<>(); names.add("Alice"); names.add("Bob"); names.add("Charlie"); for (String name : names) { System.out.println(name); } } } ``` 该代码中,`name` 变量依次引用 `names` 集合中的每个元素循环体内的操作对每个元素执行一次[^4]。 增强型 `for` 循环也支持对集合元素进行处理,例如将每个字符串转换为大写形式: ```java import java.util.ArrayList; public class ForEachUpperCase { public static void main(String[] args) { ArrayList<String> words = new ArrayList<>(); words.add("hello"); words.add("world"); words.add("java"); for (String word : words) { System.out.println(word.toUpperCase() + " "); } } } ``` 该代码将集合中的每个字符串转换为大写并输出[^2]。 需要注意的是,增强型 `for` 循环不支持在遍历过程中修改集合结构,如添加或删除元素。如果尝试在遍历过程中调用集合的 `add` 或 `remove` 方法,可能会抛出 `ConcurrentModificationException` 异常。这是因为增强型 `for` 循环底层使用了 `Iterator`,但没有提供修改集合的接口[^3]。 如果需要在遍历过程中修改集合,应使用显式的 `Iterator` 或传统的 `for` 循环。 ### 示例:遍历 `HashSet` 使用增强型 `for` 循环 ```java import java.util.HashSet; public class HashSetForEach { public static void main(String[] args) { HashSet<Integer> numbers = new HashSet<>(); numbers.add(10); numbers.add(20); numbers.add(30); for (Integer number : numbers) { System.out.println(number); } } } ``` 该代码展示了如何使用增强型 `for` 循环遍历 `HashSet`。由于 `HashSet` 不保证元素的顺序,输出顺序可能与插入顺序不同。 ### 总结 增强型 `for` 循环是一种简洁、安全的遍历方式,适用于不需要修改集合结构的场景。它提升了代码的可读性可维护性,但限制了在遍历过程中对集合的结构性修改。对于需要在遍历中修改集合的操作,应优先考虑使用 `Iterator` 或传统 `for` 循环
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值