当前位置: 首页 > article >正文

[java][基础]ArrayList基本使用

import cn.dj.bean.Person;
import java.util.ArrayList;
import java.util.Iterator;

/*
 * ArrayList基本使用
 */
public class ArrayListTest {

  /**
   * @param args
   */
  public static void main(String[] args) {
    // TODO Auto-generated method stub
    ArrayList al = new ArrayList();
    al.add(new Person("lise1", 21));
    al.add(new Person("lise2", 22));
    al.add(new Person("lise3", 23));
    al.add(new Person("lise4", 24));

    Iterator it = al.iterator();
    while (it.hasNext()) {
      //System.out.println(((Person) it.next()).getName()+"::"+((Person) it.next()).getAge());

      Person p = (Person) it.next();
      System.out.println(p.getName() + "::" + p.getAge());
    }
  }
}

这段Java代码展示了如何使用ArrayList来存储和遍历自定义对象(在这个例子中是Person对象)。代码中包含了一些注释和未使用的代码行,我将解释代码的主要部分,并指出一些可以改进的地方。

  1. 首先,代码导入了必要的类:ArrayListIterator,以及自定义的Person类。

  2. main方法中,创建了一个ArrayList实例al

  3. 接着,向ArrayList中添加了四个Person对象。每个Person对象都通过调用其构造函数创建,并传入了名字和年龄作为参数。

  4. 然后,代码创建了一个Iterator实例it,用于遍历ArrayList

  5. while循环中,使用hasNext()方法检查Iterator是否还有下一个元素,如果有,就使用next()方法获取当前元素,并将其强制类型转换为Person对象。

  6. 最后,使用System.out.println打印出每个Person对象的名字和年龄。

可以改进的地方:

  • 注释掉的代码行System.out.println(((Person) it.next()).getName()+"::"+((Person) it.next()).getAge());是多余的,因为它尝试在一次循环迭代中两次调用next()方法,这会导致跳过一个元素。正确的做法是在循环中只调用一次next()

  • 代码中的注释// TODO Auto-generated method stub是IDE自动生成的,通常在实际编码时应该删除或替换为更有意义的注释。

  • 代码中的ArrayList没有指定泛型类型。虽然这在Java中是合法的,但使用泛型可以提供编译时类型检查,避免不必要的类型转换。例如,可以声明为ArrayList<Person>

  • 代码中没有处理ClassCastException,这是在强制类型转换时可能抛出的异常。虽然在这个例子中我们知道列表中只包含Person对象,但在更复杂的应用中,添加异常处理是一个好习惯。

  • 代码中没有释放资源,因为ArrayListIterator不需要手动释放,但这是一个好习惯,对于其他需要释放资源的对象,应该在不再使用时释放它们。


http://www.kler.cn/news/283562.html

相关文章:

  • NLP(三):词向量
  • 如何利用ChatGPT高效学习英语:从零基础到流利表达
  • 优化 spring boot 的启动速度
  • 打工人 Excel 插件 - 电子表格智能辅助插件正版购买
  • okhttp异步请求连接阻塞问题排查
  • 安卓13 背光反向 亮度反向 android13 backlight reverse
  • 家里两个路由器IP地址一样吗?‌IP地址冲突怎么办?‌
  • 数据结构代码分享
  • 机器视觉--光源打光技巧
  • C++中的异常处理与资源管理
  • 79、ansible-----playbook2
  • 以太坊 MEV 提案续篇:一文了解 Execution Tickets 和 Execution Auction
  • 金融涉案账户压降行动的实施成效与挑战
  • <WPF> xaml代码如何使用c#编写
  • 深入理解 Java 中 Map 和 Set 接口的高级用法
  • 【Rust光年纪】Rust多媒体处理库全面比较:探索安全高效的多媒体处理利器
  • Docker私有镜像仓库Harbor安装并推拉镜像
  • uniapp APP版本更新
  • easyExcel 填充写时,动态合并单元格
  • SQL视图:简化复杂查询的利器
  • Django+Vue社区养老管理系统的设计与实现
  • 光庭信息半年报:营收利润「双」下降,汽车软件业务竞争加剧
  • 揭晓9款敏捷团队必备的协作工具选择
  • MAC上Homebrew常用命令
  • LeetCode49题的反思
  • 基于事件总线EventBus实现邮件推送功能
  • 一些零碎的关于合约测试,ERC20调用的知识
  • 复杂工件的高效测量方案:自动化三坐标测量与影像测量技术集成
  • 工作中常用的100个知识点
  • DDR test Tool for imx9