当前位置:网站首页>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);
}
}
}
边栏推荐
- Oracle apex 21.2 installation and one click deployment
- 使用Matlab实现:弦截法、二分法、CG法,求零点、解方程
- CAD secondary development object
- 【MEDICAL】Attend to Medical Ontologies: Content Selection for Clinical Abstractive Summarization
- Oracle 11g uses ords+pljson to implement JSON_ Table effect
- CRP实施方法论
- Yaml file of ingress controller 0.47.0
- JSP智能小区物业管理系统
- 【信息检索导论】第二章 词项词典与倒排记录表
- ssm超市订单管理系统
猜你喜欢

Changes in foreign currency bookkeeping and revaluation general ledger balance table (Part 2)

User login function: simple but difficult

sparksql数据倾斜那些事儿

ssm垃圾分类管理系统

使用 Compose 实现可见 ScrollBar

离线数仓和bi开发的实践和思考

Two table Association of pyspark in idea2020 (field names are the same)

ssm超市订单管理系统

The boss said: whoever wants to use double to define the amount of goods, just pack up and go

SSM实验室设备管理
随机推荐
SSM second hand trading website
ORACLE EBS中消息队列fnd_msg_pub、fnd_message在PL/SQL中的应用
Conda 创建,复制,分享虚拟环境
CONDA creates, replicates, and shares virtual environments
腾讯机试题
2021-07-05c /cad secondary development create arc (4)
外币记账及重估总账余额表变化(下)
Changes in foreign currency bookkeeping and revaluation general ledger balance table (Part 2)
读《敏捷整洁之道:回归本源》后感
Write a thread pool by hand, and take you to learn the implementation principle of ThreadPoolExecutor thread pool
DNS攻击详解
ORACLE APEX 21.2安裝及一鍵部署
Yaml file of ingress controller 0.47.0
Oracle general ledger balance table GL for foreign currency bookkeeping_ Balance change (Part 1)
view的绘制机制(一)
【论文介绍】R-Drop: Regularized Dropout for Neural Networks
ORACLE 11G SYSAUX表空间满处理及move和shrink区别
【MEDICAL】Attend to Medical Ontologies: Content Selection for Clinical Abstractive Summarization
Explain in detail the process of realizing Chinese text classification by CNN
ssm+mysql实现进销存系统