Thinking in java-32 Iterable & Iterator Inteface
来源:互联网 发布:特效文字制作软件 编辑:程序博客网 时间:2024/06/16 20:26
1. java中的Iterable & Iterator?
Q1: What are the difference between Iterator VS Iterable?
A1: The “Iterable” was introduced to be able to use in the ‘foreach’ loop. A class implementing the Iterable interface can be iterated over.
实现了 Iterable接口的类可以用于增强的for循环中国年,即:for-each语句。
2. for-each 和 iterable
foreach->iterator()->next()
3. Iterator()
迭代器Iterator是这样一类东西:它管理可迭代对象的迭代访问。它维护一个当前访问迭代的状态,而且知道下一个元素的位置以及如何得到它。
Q2: How to get an Iterable in java 8 to be used in a foreach loop?
A2: In java 8, call the double ‘::’ notation as below, you can get an iterable from the Stream.
package com.fqy.blog;import java.net.URL;import java.nio.charset.StandardCharsets;import java.nio.file.Files;import java.nio.file.Path;import java.nio.file.Paths;import java.util.stream.Stream;public class MyFileReader { public static void main(String[] args) { Path file = null; try { // read from the classpath URL url = MyFileReader.class.getResource("readme.txt"); file = Paths.get(url.toURI()); // Java 8: Stream class Stream<String> lines = Files.lines(file, StandardCharsets.UTF_8); for (String line : (Iterable<String>) lines::iterator) { System.out.println("read=" + line); } } catch (Exception e) { e.printStackTrace(); } }}//Running result:read=You can rewind an Iterable by getting a new iterator() from the Iterable. read=But an Iterator only has the next() method. read=So, an Iterable is handy if you want to traverse the elements more than once.read=read=Q2. How do you get an Iterable in Java 8 to be used in a foreach loop?read=A2. In Java 8, when you call the double “::” notation as shown below, you get an Iterable from the Stream.
4. Using both Iterable and Iterator
package com.fqy.blog;import java.util.Iterator;class MyIterable<T> implements Iterable<T> { public T[] arr = null; public MyIterable(T[] arr) { this.arr = arr; } @Override public Iterator<T> iterator() { return new Iterator<T>() { private int index = 0; @Override public boolean hasNext() { if (index < arr.length) return true; return false; } @Override public T next() { System.out.println("Invoking next: "); if (this.hasNext()) return arr[index++]; return null; } @Override public void remove() { throw new UnsupportedOperationException(); } }; }}public class IterableWithIterator { public static void main(String[] args) { String[] arr = { "Java", "Oracle", "Operation System", "Spring MVC" }; MyIterable<String> myIterable = new MyIterable<>(arr); for (String str : myIterable) System.out.println(str); }}//Running result:Invoking next: JavaInvoking next: OracleInvoking next: Operation SystemInvoking next: Spring MVC
阅读全文
0 0
- Thinking in java-32 Iterable & Iterator Inteface
- Java Iterable、Iterator、iterator区别
- Iterable Iterator Java
- Java Collection Iterable Iterator
- Thinking in java 之:迭代器Iterator
- Java中的Iterable和Iterator
- java.util Iterable and Iterator
- Java迭代器---Iterable和Iterator
- Java Iterable 和 Iterator 示例
- Iterator,Iterable
- java中的Iterator和Iterable 区别
- java 链表实现 iterator iterable
- Java中的Iterable与Iterator的区别
- java中的Iterator和Iterable 区别
- java iterator与iterable的区别
- java Iterable接口和Iterator迭代器
- java中的Iterator和Iterable 区别
- Java中的Iterator和Iterable的区别
- maven项目遇到的问题
- 有什么用的方法可以让网站权重快速提高?
- SERVLETJSP Unit08: 过滤器、监听器
- ELK学习1_开源分布式搜索平台ELK+Redis+Syslog-ng实现日志实时搜索
- [leetcode]160. Intersection of Two Linked Lists
- Thinking in java-32 Iterable & Iterator Inteface
- crack the coding interview 数组与字符串 1.5
- 三元组相加获得target
- Android 性能优化之MAT分析内存泄漏
- 润乾报表DQL组件如何为查询字段的检索条件设置编辑风格
- 转载:android适配屏幕
- h5新增的标签
- MP4容器解析
- OpenPose