在python中读取文件可以很简单的使用
for line in myfile.readlines():
print line
而在jdk1.5中,只要我们的类实现了Iterable接口的,即也可以使用如下语句, for(Object o : iterable);
Iterable的接口声明如下.
public interface Iterable<T> {
/**
* Returns an iterator over a set of elements of type T.
*
* @return an Iterator.
*/
Iterator<T> iterator();
}
也即返回一个迭代器Iterator接口即可. 所以我们现在来改造我们的Reader,实现如下:
public class IterableReader extends BufferedReader implements Iterable<String>{
public IterableReader(Reader in) {
super(in);
}
public Iterator<String> iterator() {
return new IteratorReader();
}
class IteratorReader implements Iterator{
String line = null;
public boolean hasNext() {
try {
line = readLine();
} catch (IOException e) {
return false;
}
if(line == null) {
return false;
}
return true;
}
public Object next() {
return line;
}
public void remove() {
throw new UnsupportedOperationException();
}
}
}
现在我们的reader即可如下使用
StringReader r = new StringReader(" 111 \n 222 \n 333");
IterableReader reader = new IterableReader(r);
for(String str : reader) {
System.out.println(str);
}
是否感觉简洁了许多呢? :)
分享到:
- 2009-11-26 21:10
- 浏览 2837
- 评论(7)
- 论坛回复 / 浏览 (6 / 3507)
- 查看更多
相关推荐
使用您的API密钥实例化该类: $ iterable = new Iterable ( 'YOUR API KEY' );例子清单显示所有列表: $ iterable -> lists (); 订阅用户到列表: $ iterable -> list_subscribe ( $ list_id , array (array ( '...
检查Iterable是否为空 比Array.from(iterable).length效率更高,因为它仅迭代第一项,这对于动态迭代器可能会产生很大的影响,例如Generator执行昂贵的操作。 安装 $ npm install is-empty-iterable 用法 import ...
Java源码分析Iterable.pdf文件提供了Iterable接口的源码分析,包括Iterable接口的定义、实现和使用方法等内容。该文件可以帮助开发者更好地理解Iterable接口的实现机制,并且可以帮助开发者编写更加高效的代码。 ...
- `equalsignorecase(String str1, String str2)`: 忽略大小写比较两个字符串是否相等。 7. **替换** - `replace(String str, String oldChar, String newChar)`: 在字符串中将所有出现的旧字符替换为新字符。 ...
如果你希望自己的类能够支持增强 for 循环,那么可以通过实现 `Iterable` 接口来实现。实现步骤如下: 1. **实现 Iterable 接口**: ```java public class MyClass implements Iterable<MyClass.MyObject> { ...
魔术可迭代的通过在Iterable本身上调用对Iterable中的所有项目调用方法使用 。安装 $ npm install magic-iterable用法 const magicIterable = require ( 'magic-iterable' ) ;const x = {i : 0 ,increment ( value )...
##### convert_cyr_string (string $str, string $from_encoding, string $to_encoding) : string **功能**:将字符由一种Cyrillic字符集转换到另一种。 **示例**: ```php echo convert_cyr_string("Привет",...
Python内置函数涉及了Python编程语言中最基础的函数集合,它们是Python标准库的一部分,...以上列举的只是一小部分Python内置函数,但它们是处理常见任务的基础。掌握这些函数能帮助开发者编写简洁、高效的Python代码。
- `equalsIgnoreCase(String str1, String str2)`:与 `equals()` 类似,但忽略大小写。 3. **字符串的拼接** - `join(Object[] array, String separator)`:将数组元素用指定的分隔符连接成一个字符串。 - `...
PalDB 是 LinkedIn 开源的可嵌入...for (Map.Entry<String, String> entry : iterable) { String key = entry.getKey(); String value = entry.getValue(); } reader.close(); 标签:PalDB
如果`iterable-queue`与ZooKeeper集成,那么它可能支持在分布式环境中实现高可用性和一致性。"云原生"则意味着这个库可能设计时考虑了微服务架构、容器化和持续部署等现代云技术的最佳实践。 至于"Python库",这是...
本资源包可能包含了关于`string`的各种操作和用法的源代码示例,这对于我们理解和掌握字符串处理技巧非常有帮助。下面我们将深入探讨`string`的一些核心概念和常见操作。 1. **字符串定义**: - 字符串是由一个或...
支持的类型: Array, Object, String 。 更新:暂时删除了es6类型支持。 用法 npm install shuffle-iterable var shuffle = require ( 'shuffle-iterable' ) ; var obj = { a : 5 , b : 10 , c : 15 } ; shuffle ( ...
注意:forin循环遍历的集合必须是实现Iterable接口的。例如: ```java void someFunction (){ List<String> list = new ArrayList(); list.add("Hello"); list.add("Java"); list.add("World!"); String s = "...
关于学习过程中的随手笔记:自定义Iterable接口 定义一个可变参数 ... 可变参数注意点 1. 调用时可传可不传 2. 可变参数实际上就是一个数组 3. 可变参数位于形参列表的最后一个位置 */
2. **any(iterable)**:如果iterable中至少有一个元素为True,则返回True,否则返回False,空iterable返回False。 3. **cmp(x,y)**:比较x和y的大小,返回-1、0或1,但在Python 3中已弃用,建议使用比较运算符。 #...
- `str.join(iterable)`:使用字符串作为分隔符,将可迭代对象中的元素连接成新的字符串。 7. **格式化字符串**:Python提供多种格式化字符串的方式,如旧式 `%` 运算符,以及新式的 `str.format()` 方法和 f-...
迭代字符串拦截器拦截可迭代字符串-模板的主干import { iterableStringInterceptor } from "iterable-string-interceptor" ;import { createReadStream } from "fs" ;// double values inside {{}}// {{7}} -> 14for...
- **遍历对象**:可以是数组或实现了`Iterable`接口的集合类对象。 #### 三、增强for循环与传统for循环的区别 虽然增强for循环提供了一种更为简洁、易读的遍历方式,但它也有一定的局限性: 1. **无法修改索引**...
学习《Python数据分析基础》第3章最后一个例子:为每个工作簿和工作表计算总数和均值时,在pandas 实现这个例子中的data 处出现报错 此处原例子没有添加str(),但是我运行是出现报错 TypeError, ‘int’ object is ...