java

StringBuffer の速さ、String.replace の遅さ

一つの String に対していろいろな置換を行った結果を得たいとき、 String.replace を繰り返し適用すると、無駄な時間がかかる。 これは、 String オブジェクトが置換の回数だけ生成される String.replace が正規表現置換 (String.replaceAll 相当) を内部で…

Java で文字の Unicode コードブロックを調べる

import java.io.*; public class A { public static void main(String[] args) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String line; while ( (line = reader.readLine()) != null ) { for ( …

JScience

http://jscience.org/ 単位変換と精度つき数、行列とベクトルのライブラリ

UIMA 101 -- 前編 - UIMAことはじめ

http://www-06.ibm.com/jp/developerworks/ysl/library/y-uima101a/index.shtml

浮動小数点演算を非lazyにする strictfp

class やメソッドの前に付ける修飾子のひとつで、 これによって修飾されたブロックでは、 すべての浮動小数点演算の途中結果の精度が、値の型に応じた精度に限定される。 ぎゃくにいうと、 非strictfpな式では、途中でオーバーフローするような計算でもただ…

バベル案内

http://www.aoky.net/articles/steve_yegge/tour_de_babel.htm Javaに切り替えることは、2人のプログラマになることだ。 1人はあなたがもはや気にかけなくて良くなったことの面倒を見、もう1人が問題領域にフォーカスする。

無名クラスのコンストラクタ代わりに instance initializer を使う

import java.util.*; public class A { public static void main(String[] args) { Set<Integer> s = new HashSet<Integer>() { { // instance initializer. System.out.println("constructed."); super.add(0); } @Override public boolean add(Integer x) { System.out.print</integer></integer>…

Matrix Toolkits for Java ( MTJ )

http://rs.cipr.uib.no/mtj/

Java for C++ programmer

関数ポインタはない。 → interface 経由で”関数”を持つクラスのシングルトンインスタンスを渡す。リンクはしなくていい。 ただし、ライブラリを使うプログラムを実行するときに、 ライブラリがある場所にパスを通す必要がある。 java -cp lib:. Main → 少な…

GNU Trove -- High performance collections for Java.

http://trove4j.sourceforge.net/ via Collections : Programming : Java Products components (libraries, projects) Organized by topic via odz buffer - Collection Library

JDocs.com - Your javadocs super-center

http://www.jdocs.com/ いくつかの異なる Java ライブラリの API がまとめて置かれている。 ある機能を提供するライブラリを探す、というときに便利かも。org.apache.commons.math.complex とかがある。

Latka - Latka (Version 1.0 Alpha 2)

http://jakarta.apache.org/commons/sandbox/latka/ HTTP server 用の test suite

Java で木構造

富豪的プログラマは javax.swing.tree.TreeNodeのインターフェイスで、実装は DefaultMutableTreeNode を使うらしい。

Pair

class Pair<F,S> { public F first; public S second; Pair(F f, S s) { first = f; second = s; } public static<F,S> Pair<F,S> getInstance(F f, S s) { return new Pair<F,S>(f,s); } public String toString() { return "<" + first + ", " + second + ">"; } }</f,s></f,s></f,s></f,s>

1要素の列挙型は、そのままシングルトン

enum Color { RED(10); int v; Color(int i) { v = i; } } 列挙型タイプはインスタンス化できません。 Color c = new Color(11); ^ エラー1

Log4J徹底解説〜目次

http://www.nurs.or.jp/~sug/soft/log4j/index.htm log4j と annotation の連携は面白いかも。

Scalable programming in scala

2006年1月の発表

Java モニタリング

JDK 5.0 の場合、 java -Dcom.sun.management.jmxremote というオプションつきでプログラムを起動すると、 jconsole からそのプログラムの使用メモリ量などの状態が見れる。Java SE 6 Mustang じゃじゃ馬ならし Heap

Javassist 3.1とjavaagentでmemorization

http://d.hatena.ne.jp/bellbind/20050903/p2 Java で eval な javassist と、 クラス・メソッド・フィールドの修飾子をユーザー定義できる annotation を利用して、 副作用のないメソッド(値の変換のための関数)なら いつも使える修飾子 @memorize を提供す…

ジェネリック -- Java vs C#

http://homepage2.nifty.com/magicant/programmingmemo/genericsjavavscs.html C# は型引数の数だけクラスを展開し、 そのバイトコードを生成するので、実行時に型引数の情報が残る。 Java は型引数の一致をコンパイル時に判定するが、 バイトコートは型引数…

typedef を代替するトリック

ジェネリックメソッドの型推論を使う。 http://www-06.ibm.com/jp/developerworks/java/060310/j_j-jtp02216.shtml?ca=drs- public static Map newHashMap() { return new HashMap(); }これを使えば、型パラメーターを2度入力することを安全に回避することが…

ANSI C の main() 代替となる main メソッドのシグネチャ

public static void main(String... args) 何がうれしいかというと、 main を別のメソッドから呼ぶとき、長さ0の引数 main(); で呼べるということ。もともと書けていた main(new String{}); main(new String{"a", "b"}); でも呼べるし、長さ1以上の引数リス…

リストのリストを型推論

List> ll = new ArrayList>(); というステートメントには、型が多すぎる。 public class ListFactory { public static<T> List<T> newInstance(T x, int ncopy) { return new ArrayList<T>(Collections.nCopies(ncopy, x)); } public static<T> List<T> newInstance() { ret</t></t></t></t></t>…

Karetta|JavaプログラマのためのC言語入門

http://karetta.jp/book-cover/cforjava Q.クラスが無いのにどうやってプログラミングするのですか? Q.VMが無いのになぜ動くのですか?

The Scala Programming Language

http://scala.epfl.ch/ yet another JVM languageOOな継承と総称プログラミングができて、 関数型なパタンマッチとカリー化ができて、 closure と 中置記法ができて、 Java VM と .NET で走るバイナリにコンパイルできる。 Java のクラスファイルとは自由に…

Java の enum

って、思っていたより強力。switch とか iterator とか使えるし、 enum Color { RED, BLUE; } public class Test { public static void main(String[] args) { Color c = Color.RED; String s="s"; switch (c) { case RED: break; case BLUE: s = "a"; break…

MultiMap

generics な継承とか。 import java.util.*; interface MultiMap<K,V> extends Map<K,Set<V>> { boolean put(K key, V value); } class MultiHashMap<K,V> extends HashMap<K,Set<V>> implements MultiMap<K,V> { public boolean put(K key, V value) { Set<V> s = get(key); if ( s == null ) { </v></k,v></k,set<v></k,v></k,set<v></k,v>…

Java の配列の型安全性の穴

public class Subarray { public static void main(String[] args) { Integer[] i = new Integer[1]; // i[0] = new String(""); はもちろん通らないけれども、 // 安全なはずの「上位型へのキャスト」を使うと ... ( (Object[])i )[0] = new String(""); } …

Java パフォーマンスチューニング

http://javanews.jp/javap/ Java Performance Tuningの日本語版。ヒープの大きさに関する質問では、 仮想メモリのことの他に、メモリを多く長く使うプログラムでは 古い非効率な GC が起動され、パフォーマンスを急激に低下させることがあるとか。

JDK 5.0 で日本語フォントを使う

$JAVA_HOME/jre/lib/fonts/fallback/ に使いたいフォント(TrueType)を置き、 $JAVA_HOME/jre/lib/fontconfig.properties の記述を書き換え、それらを使うようにする。fallback ディレクトリは無ければ作る。 fontconfig.properties は、無ければ fontconfi…