素朴な疑問#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