public String toString() {
Iterator<E> it = iterator();
if (! it.hasNext())
return "[]";
StringBuilder sb = new StringBuilder();
sb.append('[');
for (;;) {
E e = it.next();
sb.append(e == this ? "(this Collection)" : e);
if (! it.hasNext())
return sb.append(']').toString();
sb.append(',').append(' ');
}
}
这个e==this什么时候会成立呢????
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答
- 小肥的胖 2019-03-27 20:40关注
如果自己也在那个 iterator里面,那么this就会等于e
import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class Test20190327 { public static void main(String[] args) { Whatever whatever1 = new Whatever(); Whatever whatever2 = new Whatever(); Whatever whatever3 = new Whatever(); Whatever whatever4 = new Whatever(); whatever3.addToList(whatever1); whatever3.addToList(whatever2); // 把自己加进这个list里面 whatever3.addToList(whatever3); whatever3.addToList(whatever4); System.out.println(whatever3.toString()); } } class Whatever<T> { private List<T> list = new ArrayList<T>(); public void addToList(T t) { list.add(t); } public Iterator<T> iterator() { return list.iterator(); } @Override public String toString() { StringBuilder sb = new StringBuilder(); Iterator<T> it = iterator(); while(it.hasNext()) { T t = it.next(); if (t == this) { sb.append("[it's me]"); } else { sb.append("[not me]"); } } return sb.toString(); } }
结果
[not me][not me][it's me][not me]
解决 1无用
悬赏问题
- ¥15 关于#hadoop#的问题
- ¥15 (标签-Python|关键词-socket)
- ¥15 keil里为什么main.c定义的函数在it.c调用不了
- ¥50 切换TabTip键盘的输入法
- ¥15 可否在不同线程中调用封装数据库操作的类
- ¥15 微带串馈天线阵列每个阵元宽度计算
- ¥15 keil的map文件中Image component sizes各项意思
- ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
- ¥15 划分vlan后,链路不通了?
- ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据