Java学习--foreach语句和不规则数组

本文介绍了Java中的foreach语句,它简化数组遍历,以及不规则二维数组的使用,特别是在处理存储空间和算法效率问题上的优势。通过实例展示了如何在实际编程中应用这些概念。
摘要由CSDN通过智能技术生成

一、foreach语句

在之前的学习中,我们使用for循环(一维数组)的或for循环嵌套(二维数组)的方式,遍历数组中的每一个元素,这种方式比较繁琐。foreach语句的出现,简化了遍历数组和集合的过程。

下面让我们一起来学习foreach语句

其语法格式为

for (数组或集合的数据类型 元素变量 x :数组或集合对象) {

        处理元素变量 x

}

下面我们具体操作,对比一下for循环和foreach语句

//foreach 和 for 遍历一维数组的区别
int one[] = {2,7,4,5};
//foreach语句遍历一维数组
for (int x: one){
    System.out.print(x + "");
}
//普通for语句遍历一维数组
for(int i = 0;i < one;i ++){
    System.out.print(x + "");
}

通过对比发现,foreach语句只需要一个表达式就能达到的效果,for语句需要用三个表达式才能完成

foreach遍历二维数组的算法与一维数组不同,需要把二维数组看作一维数组的一维数组

eg :

int two [][] = {{1,2,3}},{ 0,9,8}};
//把二维数组 two 的每个元素看成类型元素为int []的一维数组
//one 是int []类型的一维数组
for (int [] one:two) {
    for (int x:one) {
        System.out.print(x + "");
    }
}

说明:for (int [ ] one:two)表示二维数组 two的每个元素类型为int,变量 one 表示一个int [ ]元素;第五行 x  的迭代一维数组 one 中的每个元素

二、不规则数组

前面介绍的二维数组每行的列数相同,这种特点的数组称为规则数组,某些情况下浪费存储空间。Java能定义不规则二维数组,即二维数组每行的列数可以不同,某些情况下不规则数组能节约数组占用的存储空间。
例如,基于词库的中文分词技术,提取《三国演义》《水浒传》中的词。假设从《三国演义提取到刘备、关羽、张飞、曹操等1500个词。从《水浒传》提取到鲁智深、武松、景阳冈、扶危济困等1000个词。每本小说提取的词的数量不同,如果定义规则二维数组,如1500x2费了大量存储空间,也降低了算法效率。这种情况可采用Java不规则二维数组进行处理 

小说提词情况
小说123456
1刘备关羽张飞曹操单刀赴会步步为营
2鲁智深武松景阳冈扶危济困

如上表所示空白的单元格将造成储存空间的浪费
 

下面我们用案例来演示不规则二维数组的处理方法

package jsu.ike.com;
import java.util.Arrays;
public class chapter3 {
    public static void main (String [] args) {
        String novel[][] = new String[3][];//声明两行的二维数组表示2本小说,列数不确定
        novel[0] = new String[3];//第一本小说3个词,第一行三列
        novel[1] = new String[2];//第二本小说两个词,第二行二列
        novel[0][0] = "刘备";
        novel[0][1] = "光羽";
        novel[0][2] = "张飞";
        novel[1][0] = "鲁智深";
        novel[1][1] = "扶危济困";
        for (String [] book:novel) {
            System.out.println();//换行
        }
    }
}

本期我们学习了foreach语句和不规则数组,二者都是在原先所学知识的加深和进化,不断优化我们的算法效率

感谢阅读,欢迎指正!

  • 15
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值