Java中数组遍历的几种方法

本文详细介绍了Java中数组遍历的三种方式:使用Consumer接口、实现Iterable接口迭代器以及Stream流,同时讨论了无符号右移运算符在编程中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

提示:这里可以添加本文要记录的大概内容:

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


一.Java中数组遍历的几种方法

数组条件

    private int size = 0;//逻辑大小
    private int capacity = 8;//容量
    private int[] array = new int[capacity];

1.创建一个方法用Consumer接口实现遍历

pubilc void foreach(函数式接口)
Consumer使用条件: 一个参数 不需要返回值 提供array[i]

 public void foreach(Consumer<Integer> consumer){//Consumer要指定泛型 不能是基本数据类型
        for (int i = 0; i < size; i++) {
            consumer.accept(array[i]);
        }
    }

Test1测试

 @Test
    public void test1(){
        DynamicArray dynamicArray = new DynamicArray();
        dynamicArray.addList(1);
        dynamicArray.addList(2);
        dynamicArray.addList(3);
        dynamicArray.addList(4);

        dynamicArray.foreach((e)->{
            System.out.println(e);
        });
    }

结果

1 2 3 4

2.实现Iterable接口使用迭代器遍历(增强For循环)

在这里插入图片描述
实现iterator抽象方法
实现后return new iterator<Integer>返回

@Override
    public Iterator<Integer> iterator() {//实现类
        return new Iterator<Integer>() {
            int i = 0;
            @Override
            public boolean hasNext() {//有没有下一个元素 
                return i < size;
            }

            @Override
            public Integer next() {//返回当前元素 并移动到下一个元素
                return array[i++];
            }
        };
    }

Test2测试

增强for循环快捷方法 dynamicArray.for自动生成

 @Test
    public void test2(){
        DynamicArray dynamicArray = new DynamicArray();
        dynamicArray.addList(1);
        dynamicArray.addList(2);
        dynamicArray.addList(3);
        dynamicArray.addList(4);

        for (Integer element : dynamicArray) {//hasNext() nest()
            System.out.println(element);
        }
    }

结果

1 2 3 4

3.实现Stream流的方式遍历

IntStream.of()能把普通数组变成流的方式

注意:如果只使用IntStream.of(array)方法最后遍历会把数组里面有效无效的数都输出

dynamicArray.stream().forEach((element)->{//forEach是流自带的方法
            System.out.println(element);
        });

结果

1 2 3 4 0 0 0 0 0

所以要使用utils包下的Arrays.copyOfRange()方法把有效值取出来

public IntStream stream(){
        return IntStream.of(Arrays.copyOfRange(array,0,size ));
    }

结果

1 2 3 4

二. java中无符号右移<<<

移位运算符在程序设计中,是位操作运算符的一种。移位运算符可以在二进制的基础上对数字进行平移。移位运算符有左移 <<,右移 >>,无符号右移 >>> 这几种。

无符号右移运算符
“>>>”:若该数为正,则高位补0,而若该数为负数,则右移后高位同样补0

int[] a;
int i = 0,j = a.length;
int m = (i + j) / 2;//
int n = (i + j) >>> 1;


总结:

一. 代码习惯

1.在写代码判断两数大小时,判断符号左边总是较小的数

二. 心得

1.无

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值