问题:自己是否可以定义一个集合使其支持增强for循环,可以请写出,不可以请说明理由。
当时不知道,哎,太弱了!
答案:
可以,增强for循环不过是Java一个语法糖
还有其他语法糖,
比如泛型中的类型擦除,自动拆箱与装箱,边长参数,增强for循环,内部类与枚举类
增强for循环,只要你的集合实现Iterable,首先javac编译就会让你通过,直观的感受就是
你的集成开发工具不会报错。比如出现红杠杠。
下面的代码就是我的实现方式,仅供参考:
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import static org.junit.Assert.*;
class Struct<T> implements Iterator{
public T t;
public Struct<T> struct;
public static Struct s;
@Override
public boolean hasNext() {
if(s==null){
s = this;
}else{
s = nextStruct();
}
if(s.struct == null){
return false;
}else{
return true;
}
}
public Struct<T> nextStruct() {
Struct s1 = s.struct;
s = s.struct;
return s1;
}
@Override
public Object next() {
return s.struct.t;
}
}
class WwxList<T> implements Iterable<T> {
private Struct<T> lastStruct = null;
private Struct<T> firstStruct = new Struct<T>();
public void add(T t){
if(lastStruct==null){
lastStruct = new Struct<T>();
firstStruct.struct = lastStruct;
this.lastStruct.t=t;
this.lastStruct.struct=null;
}else{
Struct struct = new Struct<T>();
struct.struct=null;
struct.t = t;
this.lastStruct.struct = struct;
this.lastStruct = struct;
}
}
@Override
public Iterator iterator() {
return firstStruct;
}
}
public class DayTest {
public static void main(String[] args) {
WwxList<String> wwx = new WwxList<String>();
wwx.add("1");
wwx.add("2");
wwx.add("3");
wwx.add("4");
wwx.add("4");
for(String s : wwx){
System.out.println(s);
}
}
}
输出为:
"C:\Program Files\Java\jdk1.8.0_112\bin\java"
1
2
3
4
4
完毕
扫描二维码关注公众号,回复:
4292023 查看本文章