JAVA

Preferences API

いまさらですが。。 ソース Preferences prefs = Preferences.userNodeForPackage(this.getClass()); prefs.put("xxx", name); prefs.flush(); System.out.println("load: " + prefs.get("xxx", null)); メモ ユーザー毎/システム毎に設定を保存できる。 格…

JSPプレコンパイル

JSPの起動を高速化する:JavaTips 〜JSP/サーブレット編 - @IT 知らなかった。。

シングルトン(Singleton)

アルゴリズムの息抜きのデザインパターンです。まずはシングルトンです。 JVM上でただ一つのインスタンスを強制します。 キャッシュするときとかに使ったりします。 本体 public class Singleton { private long currentTime = 0; private static Singleton …

クイックソート(Quick Sort)

原理はこれ見てください。ソートアルゴリズムで最速といわれています。 基準値の選び方があるようですが、下記では配列範囲内の一番右を使っています。 なんかクイックソートのサンプルはバグが多かったです。。int[] data = {1,1,1}; で無限ループします。o…

二分探索(Binary Search)

ソート済みデータだけ使用可能。データ群の真ん中の値と検索データを比較し、大きい場合は大きいブロックを、小さい場合は小さいブロックを検索し続けて検索データを見つける。速い。 public boolean search(int[] data, int searchData) { int min = 0; int…

線形探索(Liner Search)

逐次探索。最大 O(n)回の比較が必要です。単純ですが時間かかります。 public boolean search(int[] data, int searchData) { for (int i=0; i

シェルソート(Shell Sort)

基本挿入法の改良版。ざっとソートしてから基本挿入法を行う。 最悪パターンは、O(n2)かかる。 private void sort(int[] data) { int gap = data.length / 2; while (gap > 0) { for (int i=gap; i<data.length; i++) { int j = i; while (j >= gap) { if (data[j] < data[j-gap]) { int tmp = data[j];</data.length;>…

基本挿入法(Insertion Sort)

ソート済み領域にデータを挿入してソートする方法。 比較回数は最悪、O(n2) かかるが、それなりにソートされているデータに対してはバブルソートより早い。 public void sort(int[] data) { for (int i=1; i<data.length; i++) { for (int j=i-1; 0<=j; j--) { if (data[j] > data[j+1]) { int tmp = data[j]; data[j] = data</data.length;>…

シェーカーソート (Cocktail Sort)

バブルソートの派生版。バブルソートと同様にO(n2)の比較が行われる。 最小値と最大値を交互に決めていき、徐々に比較回数を減らしていく。 また、1回も値の交換がされなかった場合は、ソートが完了しているので、比較を完了にして無駄な比較を減らす。 pub…

選択ソート(Selection Sort)

基本選択法とも言われます。データの中から最小データを探し出し、最小から最大まで埋めていく方式。 バブルソート同様にO(n2)の比較が行われるため遅い。 public void selectionSort(int[] data) { for (int i=0; i

バブルソート(Bubble Sort)

いまさらですがバブルソートです。 隣り合った要素を比較し、データの大小により交換を行う。 O(n2) 回の比較が行われるため遅い。 public class BubbleSort { public static void main(String[] args) { int data[] = {80, 41, 35, 90, 40, 20, 100}; long …

addShutdownHook

忘れそうなのでメモ public class Test { public static void main(String[] args) throws Throwable { new Test().execute(); } public Test() { init(); } private void init() { Runtime.getRuntime().addShutdownHook( new Thread() { public void run()…

build.xml for YUI Comporession

これの続きです。もっといい方法があるかもしれませんが…。 <project default="all"> <property name="src.path" value="src" /> <property name="dist.path" value="dist" /> <target name="yuicompression"> <echo message="${filename}" /> </echo></target></property></property></project>