当前位置:网站首页>Implement interface Iterable & lt; T>
Implement interface Iterable & lt; T>
2022-07-02 07:23:00 【Drizzle】
Implementation interface Interface Iterable
Java Doc
public interface Iterable
Implementing this interface allows an object to be the target of the enhanced for statement (sometimes called the “for-each loop” statement).
Since: 1.5
So what is enhanced for statement Well ? see Java Language Specification, Do not go into , Similar to the following for sentence .
for (T t : this)
action.accept(t);
Then we need to implement the interface , What method functions do you need to implement ? you 're right , Namely Iterator<T> iterator() This method . This method ,Returns an iterator over elements of type T.
Realize this method , I need to return a Iterator<T> The object of ,Iterator<T> It's also an interface , We create a corresponding object , You need to implement this interface class first . The methods that this interface class needs to implement are :
boolean hasNext();
Returns true if the iteration has more elements. (In other words, returns true if next() would return an element rather than throwing an exception.)
T next();
Returns the next element in the iteration.
According to these known , We can start to implement this interface .
Complete code
import java.util.Arrays;
import java.util.Iterator;
public class ImplementIterable implements Iterable<String> {
private int size;
private int current;
private Object [] o;
ImplementIterable() {
size = 0;
o = new Object [1];
}
public void add(String s) {
if(size == o.length) {
o= Arrays.copyOf(o, o.length<<1);
}
o[size ++] = s;
}
@Override
public Iterator<String> iterator() {
class I implements Iterator<String> {
I() {
current = 0;
}
@Override
public boolean hasNext() {
if(current < size) {
return true;
}
return false;
}
@Override
public String next() {
return o[current ++].toString();
}
}
return new I();
}
public static void main(String[] args) {
ImplementIterable i = new ImplementIterable();
i.add("a");
i.add("b");
i.add("c");
for(String s : i) {
System.out.println(s);
}
}
}
边栏推荐
- TCP攻击
- MySQL composite index with or without ID
- [introduction to information retrieval] Chapter 3 fault tolerant retrieval
- SSM second hand trading website
- How to efficiently develop a wechat applet
- ssm垃圾分类管理系统
- Spark SQL task performance optimization (basic)
- Oracle 11g sysaux table space full processing and the difference between move and shrink
- Explain in detail the process of realizing Chinese text classification by CNN
- 【信息检索导论】第三章 容错式检索
猜你喜欢
随机推荐
Sqli labs customs clearance summary-page1
Illustration of etcd access in kubernetes
【模型蒸馏】TinyBERT: Distilling BERT for Natural Language Understanding
Build FRP for intranet penetration
[introduction to information retrieval] Chapter II vocabulary dictionary and inverted record table
ORACLE 11.2.0.3 不停机处理SYSAUX表空间一直增长问题
MapReduce与YARN原理解析
SSM student achievement information management system
Only the background of famous universities and factories can programmers have a way out? Netizen: two, big factory background is OK
Oracle rman半自动恢复脚本-restore阶段
Transform the tree structure into array in PHP (flatten the tree structure and keep the sorting of upper and lower levels)
使用Matlab实现:Jacobi、Gauss-Seidel迭代
Spark SQL task performance optimization (basic)
view的绘制机制(一)
spark sql任务性能优化(基础)
2021-07-19c CAD secondary development creates multiple line segments
Oracle 11.2.0.3 handles the problem of continuous growth of sysaux table space without downtime
SSM personnel management system
使用 Compose 实现可见 ScrollBar
Oracle rman自动恢复脚本(生产数据向测试迁移)









