java.util.PriorityQueueを1.4系で使う

Javaの良いところはなんとゆってもWrite once, run anywhereなのだけれどもJREのバージョン間の違いは当然あるわけで、そのへんのバージョン互換性問題用に、Eclipseでは複数のバージョンのJREを使い分けて開発できます。

まぁよっぽど古いマシンでなければ1.4系で動くように書いておけば大抵のマシンで走ります。Genericsとか使わなければいいだけじゃん?とか思ったら、java.util.PriorityQueueが1.5系(J2SE5.0)以降でしか使えなかった罠。なんでこんな基本的なコレクションが1.4にないんだヽ(`Д´)ノウワァァン!

優先付きキューぐらい誰か作ってるはずとGoogle先生にお伺いを立てたところ素敵なものを発見↓
http://dcl.mathcs.emory.edu/util/backport-util-concurrent/
このライブラリ自体は元々5.0で追加されたマルチスレッド用コレクションであるjava.util.concurrentのバージョン互換性を保つための1.2〜1.4のレガシー環境用実装なのだけど。この中に同期しない普通のシングルスレッド用のコレクションの実装もありjava.util.PriorityQueueも含まれてました。クラス名やメソッドのシグニチャは一致してるので、ライブラリのjarにクラスパス通せばimport文を変更するだけでその他コードは書き換えずに使えます。素敵杉。