迭代器(Iterator)
迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。
Java中的Iterator功能比较简单,并且只能单向移动:
(1) 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:iterator()方法是java.lang.Iterable接口,被Collection继承。
(2) 使用next()获得序列中的下一个元素。
(3) 使用hasNext()检查序列中是否还有元素。
(4) 使用remove()将迭代器新返回的元素删除。
Iterator是Java迭代器最简单的实现,为List设计的ListIterator具有更多的功能,它可以从两个方向遍历List,也可以从List中插入和删除元素。
迭代器应用:
ArrayList<String> l=new ArrayList<String> ();
l.add("aa");
l.add("bb");
l.add("cc");
for (Iterator iter = l.iterator(); iter.hasNext();) {
String str = (String)iter.next();
System.out.println(str);
}
/*迭代器用于while循环
Iterator iter = l.iterator();
while(iter.hasNext()){
String str = (String) iter.next();
System.out.println(str);
}
*/
s是遍历后赋值的变量,v是要遍历的list。 可以通过以下语句进行测试: List<String> v=new ArrayList(); v.add("one"); v.add("two"); for(String s:v){ System.out.println(s); } 注意s要跟前面的类型匹配。
泛型意义:一些强类型编程语言支援泛型,其主要目的是加强类型安全及减少类转换的次数
使用FileUtils IOUtils
文本输出应该比较常用,以前都是通过反复的创建InputStream, InputReader, OutputStream, OutputWriter等去输入输出文本,比较麻烦。
Apache提供了一个commons-io.jar包,里面有很多IO相关的工具,比如输入输出文本等,着实方便了很多。
比如读取一个文件:
- // by FileUtils
- List<String> lines = FileUtils.readLines(file, "UTF-8");
- // by IOUtils
- List<String> lines = IOUtils.readLines(new FileInputStream(file), "UTF-8");
写入文件:
- // by FileUtils
- FileUtils.writeLines(file, "UTF-8", lines);
- // by IOUtils
- IOUtils.writeLines(lines, null, new FileOutputStream(file));
FileUtils/IOUtils还有其他很多方法用于读取写入文件,或者读取输出到InputStream/OutputStream等,这里就不再一一列举,可以参考查阅对应的Java Doc
FileUtils: http://commons.apache.org/io/api-2.0/org/apache/commons/io/FileUtils.html
IOUtils: http://commons.apache.org/io/api-2.0/org/apache/commons/io/IOUtils.html
特殊需求:FileUtils/IOUtils中写入文本的方法看上去都是只能一次性的批量写入多行,并覆盖原有的文本,如果我们需要单行写入怎么办呢,其实在IOUtils中是提供了这样的方法的,只不过比较隐晦而已:
- try {
- OutputStream os = new FileOutputStream(file, true);
- IOUtils.writeLines(lines, null, os, "UTF-8");
- } catch (IOException e) {
- e.printStackTrace();
- }
其实就是在初始化FileOutputStream的时候 ,第二个参数append设为true就可以了。
BufferedReader 由Reader类扩展而来,提供通用的缓冲方式文本读取,而且提供了很实用的readLine,读取分行文本很适合,BufferedReader是针对Reader的,不直接针对文件,也不是只针对文件读取。
FileReader是由java.io.InputStreamReade扩展来的,是针对文件读取的。
实际使用时往往用 BufferedReader bfrTemp = new BufferedReader(new FileReader("test.conf"));先建立一个文件reader,再用BufferedReader读。
FileInputStream 扩展自java.io.InputStream,InputStream提供的是字节流的读取,而非文本读取,这是和Reader类的根本区别。用Reader读取出来的是char数组或者String ,使用InputStream读取出来的是byte数组。
相关推荐
在本项目中,"日历备忘录Java源码" 提供了一套完整的日历应用程序的源代码,主要由四个核心文件组成:NotePad.java、CalendarPad.java、Month.java 和 Year.java。这些文件分别代表了备忘录、日历、月份和年份的功能...
Java备忘录系统是一个使用Java编程语言开发的应用程序,它旨在提供一个用户友好的界面,让用户可以方便地创建、编辑和管理个人的备忘事项。这个系统的核心功能可能包括添加新备忘、删除旧备忘、修改现有备忘以及搜索...
下面是一个简单的Java备忘录模式示例: ```java // 发起人角色 class Originator { private String state; public Originator(String state) { this.state = state; } // 创建备忘录 public Memento ...
Java备忘录编写源代码及运行界面截图 本文主要介绍 Java 编程语言中一个备忘录的源代码实现,包括界面设计和事件监听器的使用。下面是相关知识点的详细解释: 1. Java Swansea import 语句 在 Java 中,import ...
总结一下,实现一个Java备忘时钟需要以下步骤: 1. 理解和使用`java.time`包处理日期和时间。 2. 设计`Reminder`类和存储结构。 3. 使用`Timer`和`TimerTask`创建定时检查机制。 4. 创建基于Swing的GUI,包括时间...
【Java 备忘录应用程序开发】\n\nJava备忘录编写源代码涉及到构建一个用户界面,用于创建和管理个人备忘录。该程序使用Java Swing库来设计图形用户界面(GUI),并实现了基本的登录功能,具备背景图片、验证码以及...
【Java 备忘录应用开发】 在Java编程中,我们可以创建一个备忘录应用程序来帮助用户记录和管理他们的日常事务。以下是一个简单的备忘录应用的源代码概述,主要涉及Swing库用于构建图形用户界面(GUI)。 首先,我们...
【Java 备忘录应用程序开发】 在Java编程中,创建一个备忘录应用程序涉及到用户界面设计、事件处理以及数据管理等多个方面。以下是对提供的代码片段的解析和相关知识点的详细说明: 1. **基础组件与布局**: - `...
毕业设计基于JavaWeb实现的一个备忘录系统项目源码。难度适中,新手自己可操作 备忘录 介绍 后端部分基于Servlet、Jdbc实现. 前端部分基于Layui、jqury实现。 一个简单的前后端分离Demo,前后端交互JSON数据格式 ...
用JAVA编写的备忘录, 可以记录下你每天做的事情,可以查看你以前做的事情,很有帮助
在本项目中,我们讨论的是一个使用Java编程语言与MySQL数据库进行开发的备忘录系统。这个系统的主要目标是提供一套便捷的工具,让用户能够轻松地管理他们的日常事务,包括创建、编辑、查找和删除备忘录。同时,系统...
在Java中,备忘录模式通常包括三个关键角色:原始对象(Originator)、备忘录(Memento)和管理者(Caretaker)。原始对象是需要保存状态的对象,它创建并存储在备忘录中的状态。备忘录负责存储原始对象的状态,而...
Java日历及备忘录程序是一个实用的桌面应用程序,它模仿了Windows操作系统中的日历功能,并添加了备忘录管理特性。这个程序的核心是利用Java编程语言实现的,旨在帮助用户方便地查看日期并设置提醒,提高个人或工作...
在本项目中,"java课设--个人备忘录管理系统"是一个基于Java编程语言实现的课程设计项目,旨在提供一个方便用户记录、管理和检索个人备忘录的应用程序。这个系统通常包括用户界面、数据存储、备忘录的增删改查等功能...
万年记事薄,左边是年历,右边是记事簿,记事可删除,查看,周六 周日的颜色有点特殊,要细看奥,
本项目名为"备忘录日程管理java代码",它是一个基于Java的软件,主要功能集中在帮助用户进行备忘录记录和日程管理。下面我们将深入探讨这个项目涉及到的关键知识点。 1. **Java基础**: - **面向对象编程**:Java...