当前位置:网站首页>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);
}
}
}
边栏推荐
- parser.parse_args 布尔值类型将False解析为True
- Find in laravel8_ in_ Usage of set and upsert
- SSM学生成绩信息管理系统
- [tricks] whiteningbert: an easy unsupervised sentence embedding approach
- 【Torch】最简洁logging使用指南
- pySpark构建临时表报错
- [Bert, gpt+kg research] collection of papers on the integration of Pretrain model with knowledge
- ssm+mysql实现进销存系统
- Write a thread pool by hand, and take you to learn the implementation principle of ThreadPoolExecutor thread pool
- Oracle EBs and apex integrated login and principle analysis
猜你喜欢

User login function: simple but difficult

SSM supermarket order management system

【MEDICAL】Attend to Medical Ontologies: Content Selection for Clinical Abstractive Summarization

view的绘制机制(一)

【信息检索导论】第三章 容错式检索

ORACLE 11G利用 ORDS+pljson来实现json_table 效果

Spark的原理解析

Yaml file of ingress controller 0.47.0

Sqli-labs customs clearance (less2-less5)

Implementation of purchase, sales and inventory system with ssm+mysql
随机推荐
Oracle EBS ADI development steps
Oracle段顾问、怎么处理行链接行迁移、降低高水位
Oracle RMAN automatic recovery script (migration of production data to test)
DNS attack details
Oracle segment advisor, how to deal with row link row migration, reduce high water level
【信息检索导论】第二章 词项词典与倒排记录表
Oracle RMAN semi automatic recovery script restore phase
Find in laravel8_ in_ Usage of set and upsert
Three principles of architecture design
Sparksql data skew
Get the uppercase initials of Chinese Pinyin in PHP
外币记账及重估总账余额表变化(下)
RMAN增量恢复示例(1)-不带未备份的归档日志
Analysis of MapReduce and yarn principles
Oracle general ledger balance table GL for foreign currency bookkeeping_ Balance change (Part 1)
@Transitional step pit
User login function: simple but difficult
使用Matlab实现:Jacobi、Gauss-Seidel迭代
The boss said: whoever wants to use double to define the amount of goods, just pack up and go
CONDA creates, replicates, and shares virtual environments