java
一つの String に対していろいろな置換を行った結果を得たいとき、 String.replace を繰り返し適用すると、無駄な時間がかかる。 これは、 String オブジェクトが置換の回数だけ生成される String.replace が正規表現置換 (String.replaceAll 相当) を内部で…
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 ( …
http://jscience.org/ 単位変換と精度つき数、行列とベクトルのライブラリ
http://www-06.ibm.com/jp/developerworks/ysl/library/y-uima101a/index.shtml
class やメソッドの前に付ける修飾子のひとつで、 これによって修飾されたブロックでは、 すべての浮動小数点演算の途中結果の精度が、値の型に応じた精度に限定される。 ぎゃくにいうと、 非strictfpな式では、途中でオーバーフローするような計算でもただ…
http://www.aoky.net/articles/steve_yegge/tour_de_babel.htm Javaに切り替えることは、2人のプログラマになることだ。 1人はあなたがもはや気にかけなくて良くなったことの面倒を見、もう1人が問題領域にフォーカスする。
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>…
http://rs.cipr.uib.no/mtj/
関数ポインタはない。 → interface 経由で”関数”を持つクラスのシングルトンインスタンスを渡す。リンクはしなくていい。 ただし、ライブラリを使うプログラムを実行するときに、 ライブラリがある場所にパスを通す必要がある。 java -cp lib:. Main → 少な…
http://trove4j.sourceforge.net/ via Collections : Programming : Java Products components (libraries, projects) Organized by topic via odz buffer - Collection Library
http://www.jdocs.com/ いくつかの異なる Java ライブラリの API がまとめて置かれている。 ある機能を提供するライブラリを探す、というときに便利かも。org.apache.commons.math.complex とかがある。
http://jakarta.apache.org/commons/sandbox/latka/ HTTP server 用の test suite
富豪的プログラマは javax.swing.tree.TreeNodeのインターフェイスで、実装は DefaultMutableTreeNode を使うらしい。
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>
enum Color { RED(10); int v; Color(int i) { v = i; } } 列挙型タイプはインスタンス化できません。 Color c = new Color(11); ^ エラー1
http://www.nurs.or.jp/~sug/soft/log4j/index.htm log4j と annotation の連携は面白いかも。
2006年1月の発表
JDK 5.0 の場合、 java -Dcom.sun.management.jmxremote というオプションつきでプログラムを起動すると、 jconsole からそのプログラムの使用メモリ量などの状態が見れる。Java SE 6 Mustang じゃじゃ馬ならし Heap
http://d.hatena.ne.jp/bellbind/20050903/p2 Java で eval な javassist と、 クラス・メソッド・フィールドの修飾子をユーザー定義できる annotation を利用して、 副作用のないメソッド(値の変換のための関数)なら いつも使える修飾子 @memorize を提供す…
http://homepage2.nifty.com/magicant/programmingmemo/genericsjavavscs.html C# は型引数の数だけクラスを展開し、 そのバイトコードを生成するので、実行時に型引数の情報が残る。 Java は型引数の一致をコンパイル時に判定するが、 バイトコートは型引数…
ジェネリックメソッドの型推論を使う。 http://www-06.ibm.com/jp/developerworks/java/060310/j_j-jtp02216.shtml?ca=drs- public static Map newHashMap() { return new HashMap(); }これを使えば、型パラメーターを2度入力することを安全に回避することが…
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>…
http://karetta.jp/book-cover/cforjava Q.クラスが無いのにどうやってプログラミングするのですか? Q.VMが無いのになぜ動くのですか?
http://scala.epfl.ch/ yet another JVM languageOOな継承と総称プログラミングができて、 関数型なパタンマッチとカリー化ができて、 closure と 中置記法ができて、 Java VM と .NET で走るバイナリにコンパイルできる。 Java のクラスファイルとは自由に…
って、思っていたより強力。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…
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>…
public class Subarray { public static void main(String[] args) { Integer[] i = new Integer[1]; // i[0] = new String(""); はもちろん通らないけれども、 // 安全なはずの「上位型へのキャスト」を使うと ... ( (Object[])i )[0] = new String(""); } …
http://javanews.jp/javap/ Java Performance Tuningの日本語版。ヒープの大きさに関する質問では、 仮想メモリのことの他に、メモリを多く長く使うプログラムでは 古い非効率な GC が起動され、パフォーマンスを急激に低下させることがあるとか。
$JAVA_HOME/jre/lib/fonts/fallback/ に使いたいフォント(TrueType)を置き、 $JAVA_HOME/jre/lib/fontconfig.properties の記述を書き換え、それらを使うようにする。fallback ディレクトリは無ければ作る。 fontconfig.properties は、無ければ fontconfi…