2010-02-01から1ヶ月間の記事一覧

CountWriter

import java.io.ByteArrayOutputStream; import java.io.FilterWriter; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.UnsupportedEncodingException; import java.io.Writer; /** * 出力した文字数・バイト数を把握する…

IndentWriter

おそらく他の人には使い道の想像がつかないのではないかと思う(笑)以前、コンソールアプリケーションを作ったことがある。 いわゆるバッチ的なものではなく、ユーザーの入力に応答する類のもの。当然いくつかコマンドがあり、そのコマンドのヘルプも表示する…

CountOutputStream

import java.io.FilterOutputStream; import java.io.IOException; import java.io.OutputStream; /** * 出力したバイト数を把握するためのStream。 */ public class CountOutputStream extends FilterOutputStream { // カウンタ long[] bytes; /** * 内部…

SystemUtils

Dateクラスの派生クラスを作ろうかとも思ったけど、こっちのほうが使い回しがきくかなぁと。 public final class SystemUtils { private static long offsetCurrentTimeMillis; private static long fixCurrentTimeMillis; private SystemUtils() {} /** * {…

CSV処理

まあ特別なことはこれといってしていない。 ヘッダーの有無とか読み飛ばしとか必要かな・・・? /** * CSVの解析ロジック */ public interface Tokenizer { /** * 1つの文字列を複数の文字列に分割する * @param text * @return */ String[] toToken(String …

KeyBreakProcessor

先日記事にしたCollectionsと似たようなものではあるが・・・時々キーブレイク(コントロールブレイク?)の処理を書くことがある。 先日プロジェクトの新人メンバーが言うには考え方はわかるが、javaでどう書いたらいいかわからないとのこと。 言われてみれば…

ReverseComparator

ソート順を逆にするためのComparator。 これもcommonsプロジェクトに似たようなクラスがある。 実際に使う機会はあまりない・・・ import java.util.Comparator; public class ReverseComparator<T> implements Comparator<T> { private Comparator<T> c; public Reve</t></t></t>…

NumberStringComparator

ありがちと言えばありがち。 文字列を数値としてソートするためのComparator。 import java.math.BigDecimal; import java.util.Comparator; public class NumberStringComparator implements Comparator<String> { @Override public int compare(String o1, String </string>…

ArrayComparator

import java.util.Comparator; /** * 配列の比較に使用するComparator。 * * @param <V> */ public class ArrayComparator<V> implements Comparator<V[]> { // 比較する要素の優先順位 private int[] priority; // すべての要素の比較に使用するComparator private Com</v[]></v></v>…

Collections

使い勝手や使い道は聞かないで。 面白そうだから作ってみただけ。 public interface Executer<V> { public V execute(int index, Object... objects) throws Exception; } import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; </v>…

JdbcDriverClassLoader

import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.net.URL; import java.net.URLClassLoader; import java.net.URLStreamHandlerFactory; import java.util.Array…

CaseInsensitiveMap

これもあちこちで書いているクラス。 まあcommonsプロジェクトに同様のクラスがあるのだけども・・・ import java.util.HashMap; import java.util.Map; public class CaseInsensitiveMap<V> extends HashMap<String, V> { public CaseInsensitiveMap() { } public CaseIns</string,></v>…

CharsetResourceBundleControl

ユーティリティ系メソッドのネタが尽きたので、今回からはユーティリティ系クラス。 できるだけ単体で使用できる形で書いていく。javaコアAPIで使用する一般的な設定ファイルはpropertiesという拡張子で作成する。 読み込む時にはResourceBundleというクラス…

indexAny

文字列の中から複数のcharのうち、最初に出現する位置を返す。 実際の使いどころはというと、位置を知りたいのではなく、単に文字列の中にあるかどうかを知りたいだけだったりする。 public static int indexAny(String text, char[] ca) { int ret = -1; fo…

countChar

文字の数を数える。 csvの処理で引用符の数を数えるのに使った。 public static int countChar(String text, char c) { if (text == null) { return 0; } int ret = 0; for (int i = 0; i < text.length(); i++) { if (text.charAt(i) == c) { ret++; } } re…

dateDiff

2つの日付の間隔を取得する。 public static long dateDiff(Date d1, Date d2, int field) { Calendar c1 = Calendar.getInstance(); Calendar c2 = Calendar.getInstance(); c1.setTime(d1); c2.setTime(d2); switch (field) { case Calendar.YEAR: return …

convertDateFormat

おそらく今まで作ってきたシステムのほとんどで繰り返し書いてるメソッド。 効率化のためSimpleDateFormatのインスタンスをstatic変数にしてて失敗したこともあった。 このクラスってスレッドセーフじゃないんだよね・・・ public static String convertDate…

repeat

一つの文字を指定数続けた文字列を返す。 public static String repeat(char c, int count) { char[] ret = new char[count]; Arrays.fill(ret, c); return String.valueOf(ret); }

leftBytes

文字から指定したバイト数の文字を切り出す。 マルチバイト文字の途中のバイトでは切らない。System.out.println(leftBytes("あいうえお", 3)); => "あ" public static String leftBytes(String text, int bytes) { // file.encodingというプロパティは環境…

arrayIndexOf

配列内のオブジェクトの位置を返す。 Arrays#binarySearchはソートしないと使えない。 なんでかね? public static int arrayIndexOf(Object array, Object object) { int arrayLength = Array.getLength(array); for (int i = 0; i < arrayLength; i++) { O…

asList

Arrays#asList()はプリミティブの配列は配列として扱わず、1つのオブジェクトとして処理されてしまうのでその代用。 public static List asList(Object array) { if (array == null) { return null; } if (array instanceof List) { return (List) array; } …

getDimensions

配列の要素数を取得する。 多次元配列の場合、各次元の要素数が配列で返る。 Arrays#newInstance(Class, int[])で使用する。 作ったきっかけは何だったかな・・・ public static int[] getDimensions(Object array) { if (!array.getClass().isArray()) { re…

getComponentType

配列の要素のクラスを返す。 Class#getComponentType()は多次元配列の場合、1次元目の要素のクラスが配列クラスとなるのでその代用。 クラスが配列でなくなるまでClass#getComponentType()を再帰呼び出しする。 public static Class getComponentType(Class…

arrayToString

多次元配列のtoString()は末端の要素までちゃんと文字列化してくれないのでその代用。 配列の要素ごとに再帰呼び出しして[]で囲む。2/10追記。 jdk1.5からはArrays#deepToString()なんてのがあったのね〜 public static String arrayToString(Object object)…

getClassName

通常のClass#getName()では配列の時に判り辛いので、ソースコードに書くのと同じ書式で返すようにする。 public static String getClassName(Class clazz) { if (clazz.isArray()) { return getClassName(clazz.getComponentType()) + "[]"; } return clazz.…

getCause

まあわざわざ残すこともない気はするけど、結構良く使うので。 最初に発生したエラーの取得。 リフレクションなんか使ってると、呼び出したメソッドの中でエラーが起きると呼び出した側ではInvocationTargetExceptionだか何だかというエラーになる。 エラー…