ScheduledExecutorService(遅延実行)あたり【Java】
scheduleメソッドとか、scheduleAtFixedRateあたりを調べておきました。
scheduleの方は最初の遅延時間を引数で指定できます。
scheduledAtFixedRateは、最初の遅延時間、インターバルが指定できます。そしてどちらもその遅延時間、インターバルの時間単位をTimeUnit列挙型で指定するだけです。
実行する時はこんな感じでシングルスレッドを用意して、
ScheduledExecutorService execTest = Executors.newSingleThreadScheduledExecutor();
execTest.schedule(ラムダ式, 時間, TimeUnit.SECONDS);
終える時にはexecTest.Shutdown();
名前が長いので覚えにくいです。
enumのサンプルコード【Java】
先ほどの投稿の下にでもサンプルコードを添付しようと思ったら、一回「見たままモード」で書いた記事は、左上の所で「はてな記法モード」を選択できなくなっていることに気づきイライラ。
列挙型は使用されるときに一度だけコンストラクタが走って、カッコ内の値を渡します。A,B,Cの値が出力され、最後にMainのprintln(Sample.A);でもう一度Aの値が出力。
というわけで下記の通り。
package test; public enum Sample{ A("Helloo"), B("heelo"), C("hellllo"); private final String value; private Sample(String value) { System.out.println(value); this.value = value; } @Override public String toString() { return this.value; } } package test; public class Test { public static void main(String[] args) throws Exception{ // TODO 自動生成されたメソッド・スタブ System.out.println(Sample.A); } }
これを実行すると、コンソール表示は
Helloo
heelo
hellllo
Helloo
となります。
ローカルクラス内から参照するローカル変数は、実質的final【Java】
タイトル通りのことです。補足説明があれば後で書きます。
ComarableとComparator 似てるけど、どう違うん?【Java】
Javaでよく使う、ComparableとComparator、似てて混乱しますよね。僕はしてます。なので、このページで整理していこうかと思います。
Java.langパッケージはプログラムを作成する上でよく使用される、基本的なクラスをまとめたものです。頭にimport文で明示しなくても勝手に入ります。
そのjava.langの中にComparableはあります。比較できるやつですよーっていう目印になって、実際に、何をどう比較して順番を変えたりするのか?っていうところを実装すればよいわけですね。
その比較条件をComparableのcomapareTo(T target)メソッドの中に書いていくようになっています。
じゃあ、Comparatorは?って気になっていたので、ちょっと調べてみました。
一般的な使い方は、こんな感じです。
比較条件をComparatorの中のcompare(T a1, T a2)メソッドで引数2つ受け取り、それぞれのどの値を評価すれば1、-1、0(等価)になるかを返す、っていう感じです。
それを、Collectionsのsortメソッドの第一引数を比較対象、第二引数に比較方法(Comparatorのインスタンス)を指定すれば良いようです。