0
私はsetから要素を取り出そうとしていますが、それはclunky命題を減らし、検索後に要素を削除するのに役立ちますので、pollFirst()を使用することをお勧めします。セット全体を反復するために、私は一般的な "for"アプローチを使用しました。このアプローチでは、セットの一部だけを取り出すことができました。私はいくつかの検索を行い、while文の使用を提案する解決策を見つけることができました。しかし、なぜそれが起こったのですか? 問題文を簡単にするために、私は微妙なコメントを提供しました。なぜforFirst/Last()はfor文を使って繰り返しながらNavigableSetのすべての要素を取得できないのですか?
class SetTest {
public static void main(String[] args) {
TreeSet<String> ts = new TreeSet<String>();
ts.add(new String(new String("one")));
ts.add("two");
ts.add(new String("three"));
NavigableSet<String> ns = new TreeSet<String>();
ns.addAll(ts);
System.out.println("Before while " + ns.size());// gives us 3
while (ns.size() != 0)
ns.pollFirst();
System.out.println("After while " + ns.size());// gives us 0.
System.out.println("Before for " + ts.size());// gives us 3
for (int i = 0; i < ts.size(); i++)
ts.pollFirst();
System.out.println("After for " + ts.size());// gives us 1. WHY??
}
}