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条回答 默认 最新
金波330 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无用