Jython を学ぶ(3)───Jython で Java の配列を使う(1)

Apache Batik を使う例を書いていたら、色々と解決すべき問題があったため、まずはそちらについて書くことにします。

JythonJava の配列を使う

Java の配列は固定長配列です。


値型(boolean, char, byte, short, int, long, float, double)を扱う JavaAPI を呼び出したときは、それに相当するクラスのインスタンス(Boolean, Char, Byte, Short, Integer, Long, Float, Double)との間で Boxing ・ Unboxsing が行われます。


しかし長大な配列を扱うには Java の固定長配列を直接扱えた方がいいので、 Jython では Java の固定長配列を扱うためのモジュール jarray が提供されています。
http://www.jython.org/docs/jarray.html


Python の標準ライブラリでも値型配列を扱うための array モジュールが提供されています。
http://docs.python.org/lib/module-array.html
これは Jython でも提供されています。
Numerical Python と呼ばれるライブラリではさらに効率的な配列が使えます。


jarray の簡単な使い方の例は以下の通りです。

#!jython
import jarray
buffer=jarray.zeros(3, "b")
for i in range(0, len(buffer)):
	buffer[i]=i
for b in buffer:
	print b
buffer1=jarray.zeros(5, "b")
from java.lang import System
System.arraycopy(buffer, 0, buffer1, 0, 3)
print buffer1
pyList=[5, 4, 3, 2, 1]
buffer2=jarray.array(pyList, "b")
print buffer2

結果は

0
1
2
array('b',[0, 1, 2, 0, 0])
array('b',[5, 4, 3, 2, 1])

どうにも時間がないので

例の解説はまた次回