JMemo015

素朴な疑問#1 ~ ByteのListをbyteの配列にできないか? ~


制約事項
  • Listはプリミティブ型(intとかbyteとか)をパラメータに持てない。
  • ListはtoArrayメソッドを持っているが、その引数にプリミティブ型の配列を指定することはできない。
  • Byte[]のデータをbyte[]にキャストすることはできない。(逆は多分できるが。)

とりあえずこんなのを考えてみた。
この例は、正弦波データをbyte配列で持つ場合の話である。

private byte[] makeData() {

	List<Byte> list = new ArrayList<Byte>();
	for (double theta = 0; theta <= 6.28 * 100; theta += 0.01) {
		byte sinTheta = (byte) (Math.sin(theta) * 128);
		list.add(sinTheta);
	}

	byte[] result = new byte[list.size()];
	int i = 0;
	for(Byte b : list) {
		result[i++] = b;
	}
	 
	return result;
}

単純に1要素ずつコピーしているだけである。

ああ美しくない。
何かエレガントな方法はないものか。

名前:
コメント:
最終更新:2011年12月12日 15:19