harpun のソリューションは適切に機能しますが、別の質問が頭に浮かびました..この質問は、私のアプリケーションが大量のint[]
書き込みと読み取りを行うため、パフォーマンスに関するものです..
次のソリューションの方がパフォーマンスが向上するはずだと思います..
書きます:
WritableUtils.writeVInt(out, array.length);
for(int i=0; i<array.length; i++)
WritableUtils.writeVInt(out, array[i]);
読んだ:
int[] array = new array[WritableUtils.readVInt(in)];
for(int i=0; i<array.length; i++)
array[i] = WritableUtils.readVInt(in);
毎回 IntArrayWritable にラップする代わりに..
書きます:
IntWritable[] a = new IntWritable[array.length];
for(int i=0; i<a.length; i++)
a[i] = new IntWritable(array[i]);
IntArrayWritable arrayWritable = new IntArrayWritable();
arrayWritable.set(a);
arrayWritable.write(arg0);
読んだ:
IntArrayWritable arrayWritable = new IntArrayWritable();
arrayWritable.readFields(arg0);
Writable[] a = arrayWritable.get();
int[] array = new int[a.length];
for(int i=0; i<array.length; i++)
array[i] = ((IntWritable)a[i]).get();
ではない?あれについてどう思う?