JDKバージョン8+ターゲットバージョン7以下でIteratorコンパイルエラー
ハマった後で「ははーなるほどー」と感じた事象について。
EclipseでJavaプロジェクトをつくって開発をしていたのですが、その際のプロジェクトのJavaコンパイラ設定のターゲット・バージョンは6もしくは7にしていました。

一方で全体設定の「インストールされたJRE」のセクションではJDK8を選んでいる状態。

この状態のEclipseで、少なくともEclipseのアシストで自動挿入されるテンプレートコード(TODOコメント付きのアレ)をもとにIteratorの実装を行うと、Java8でdefaultメソッドになったremove()は実装しない、あるいは少なくとも「実装しなくてもいい」ことになります。コンパイルエラーにもならないし、実行時エラーにもなりません。もちろんこうしてつくったコードを別環境のJDK7以下のコンパイラでコンパイルしようとするとコンパイルエラーになります。
これはJava8で導入されたdefaultメソッドに起因する問題ですのでIteratorに限った話ではないはずです。ターゲットバージョンを指定しているのに(少なくとも部分的に)Java8的にコンパイルされてしまう点にはちょっと疑問を感じざるを得ないですが、インストールされているJDKに付属の標準ライブラリのIteratorにはremove()メソッドが事実存在しているので、そのJDKでコンパイルして付属のJREで実行する限りはきちんと(?)動作するコードになってしまうわけです。