Jython を学ぶ(3)───Jython で Java の配列を使う(1)
Apache Batik を使う例を書いていたら、色々と解決すべき問題があったため、まずはそちらについて書くことにします。
Jython で Java の配列を使う
Java の配列は固定長配列です。
値型(boolean, char, byte, short, int, long, float, double)を扱う Java の API を呼び出したときは、それに相当するクラスのインスタンス(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])
どうにも時間がないので
例の解説はまた次回