星空网站建设

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 0|回复: 0

盘点java iterator

[复制链接]
  • TA的每日心情
    郁闷
    5 小时前
  • 签到天数: 44 天

    [LV.5]常住居民I

    10万

    主题

    40

    回帖

    30万

    积分

    超级版主

    Rank: 8Rank: 8

    积分
    304572
    发表于 2025-8-2 02:08:41 | 显示全部楼层 |阅读模式

    在J中,I是一个接口,位于包中。它定义了个核心方法:N():该方法返回一个布尔值,用于判断集合中是否还有未被迭代的元素。



    N()





    ():该方法返回集合中的下一个元素。如果没有更多的元素可以返回,则会抛出NSEE。



    E()





    ():该方法用于删除迭代器比较近返回的元素。调用此方法是可选的,并且必须在调用()之后进行。注意,一旦调用了(),它将影响底层集合。



    ()





    迭代器的使用

    迭代器适用于众多集合类,包括AL,LL,HS,TS,HM等。我们通常使用这些集合的()方法获取一个迭代器例。



    以下是一个使用迭代器遍历AL的简单例子:



    AL;

    I;



    IE{

    (S[]){

    创建一个AL并添加元素

    ALS=AL();

    ("E1");

    ("E2");

    ("E3");



    获取迭代器

    IS=();



    使用迭代器遍历集合

    (N()){

    S=();

    S();

    }

    }

    }

    迭代器与集合

    在J集合框架中,许多集合类都现了I接口,这意味着它们都可以返回一个I例。I接口仅包含一个方法:



    IT();

    这使得-循环得以现,因为-本质上是使用迭代器进行遍历的。



    迭代器-

    使用迭代器和使用-循环在很多情况下是等价的,但两者之间存在一些差异:迭代器提供更多控制:迭代器允许在遍历过程中删除元素,而-不允许。可用于并行修改:迭代器更为安全,因为它检测到并发修改时(不是通过迭代器进行的集合内容修改)会抛出CME,从而保护集合的完整性。迭代器删除功能

    ()方法是迭代器提供的一个功能,用于在迭代过程中移除元素。需要注意的是,()方法必须在()方法之后被调用。



    以下是示例代码展示如何在遍历过程中删除元素:



    AL;

    I;



    IRE{

    (S[]){

    ALI=AL();

    (1);

    (2);

    (3);

    (4);



    II=();



    (N()){

    I=();

    (%2==0){

    ();移除偶数

    }

    }



    S();输出:[1,3]

    }

    }

    LI

    对于L接口,有一个更加丰富的迭代器接口,称为LI。它继承了I接口,并增加了一些额外的功能:双向遍历:使用LI,你可以向前或向后遍历列表。



    P()

    E()





    获取当前索引:有方法可以获取到当前元素的索引。



    I()

    I()





    添加元素:可以在遍历时添加元素。



    (E)





    以下是LI的一个简单示例:



    AL;

    LI;



    LIE{

    (S[]){

    ALS=AL();

    ("A");

    ("B");

    ("C");



    LIS=I();



    (N()){

    S(());

    }



    反向遍历

    (P()){

    S(());

    }

    }

    }

    总结

    迭代器是J集合框架中的重要工具,它使得遍历集合变得简单和统一。通过提供抽象的遍历接口,J使得现上可以隐藏底层的复杂性,从而提高了代码的可维护性和可读性。在现代J编程中,尽管-循环非常流行且简洁,但迭代器依然在需要更精细控制的场景下可替代,特别是在需要并发修改集合时。理解和善用J迭代器是掌握集合框架的重要一步。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    快速回复 返回顶部 返回列表