テクノロジーメモリーズ

テクノロジーメモリーズ

忘れないための技術メモ

Amebaでブログを始めよう!
例えばこんな定数クラスがあったとします。

public final class SampleConstClass {
public static final String ABC = "ABC";
}

それをinterfaceで定義するとこうなります。

public interface SampleConstInterface {
String ABC = "ABC";
}

あれ、『public』『static』『final』 の定義は?
実はinterfaceの場合、暗黙的に上記3つが適用されます。

ちなみにメソッドに関しても暗黙的に『public』 と 『abstract』 が適用されます。

無意味なコードはなるべく書かないようにしましょう。


パフォーマンスを測定する場合、以下のような形で行いますが、

-----------------------------------------------
long start = System.currentTimeMillis();

// 重い処理があるとする

long end = System.currentTimeMillis();

System.out.println((end - start) + "ms");

<結果>
53106ms
-----------------------------------------------

数十秒以上かかる処理だと結果が見にくいので、
秒に変換してくれるjava.util.concurrent.TimeUnitを使うと便利です。

System.out.println(TimeUnit.MILLISECONDS.toSeconds(end - start) + "秒");

<結果>
53秒


変換元単位.to変換先単位(long値)という形式でいろいろ変換可能です。
詳しくはAPIをご参照ください。
http://docs.oracle.com/javase/jp/7/api/java/util/concurrent/TimeUnit.html
重複データを除外したい場合、Setインターフェースを使えば簡単に除外できます。

<サンプル>
Set<String> set = new HashSet<String>();
set.add("AA");
set.add("BB");
set.add("AA");

System.out.println(Arrays.asList(set.toArray()));

<出力結果>
[AA, BB]

ちなみに、実装クラスとしてHashSet、LinkedHashSet、TreeSetがありますが
速いのはHashSet、LinkedHashSetで、TreeSetは遅いようです。