当前位置:网站首页>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);
}
}
}
边栏推荐
- SSM二手交易网站
- Oracle 11g sysaux table space full processing and the difference between move and shrink
- CSRF attack
- Classloader and parental delegation mechanism
- MySQL composite index with or without ID
- Oracle 11g uses ords+pljson to implement JSON_ Table effect
- SSM personnel management system
- 华为机试题
- CRP implementation methodology
- 外币记账及重估总账余额表变化(下)
猜你喜欢
一份Slide两张表格带你快速了解目标检测
Sqli labs customs clearance summary-page2
MapReduce与YARN原理解析
SSM personnel management system
Sqli-labs customs clearance (less2-less5)
[Bert, gpt+kg research] collection of papers on the integration of Pretrain model with knowledge
The first quickapp demo
Agile development of software development pattern (scrum)
【信息检索导论】第一章 布尔检索
Interpretation of ernie1.0 and ernie2.0 papers
随机推荐
软件开发模式之敏捷开发(scrum)
Get the uppercase initials of Chinese Pinyin in PHP
SSM laboratory equipment management
【Torch】最简洁logging使用指南
Sqli labs customs clearance summary-page1
pySpark构建临时表报错
离线数仓和bi开发的实践和思考
CONDA creates, replicates, and shares virtual environments
oracle EBS标准表的后缀解释说明
ORACLE APEX 21.2安裝及一鍵部署
叮咚,Redis OM对象映射框架来了
Pratique et réflexion sur l'entrepôt de données hors ligne et le développement Bi
数仓模型事实表模型设计
SSM garbage classification management system
Oracle general ledger balance table GL for foreign currency bookkeeping_ Balance change (Part 1)
一个中年程序员学习中国近代史的小结
【信息检索导论】第七章搜索系统中的评分计算
view的绘制机制(二)
TCP攻击
Oracle rman半自动恢复脚本-restore阶段