Java/Python 導入ガイド《4》Collection Interface

記事一覧入門編基礎編応用編中級編

Java プログラマーのための Python 導入ガイド〈初級/入門編〉《Jython2.5.0》
《4》Collection Interface

《著》森こねこ・本間りす・小粒ちゃん《監修》小泉ひよ子とタマゴ倶楽部
第1版♪2003/05/23 ● 第2版♪2009/04/03

》作業中です《 2006年6月29日 (木)

■ 概要

Java™ Programming Language〔JPL〕の事例を使って、JavaJython との違いを学びます。

Collection Interface

 Java の公式サイトには、次の《事例》が紹介してあります。

# Iterators
public interface Iterator {
    boolean hasNext();
    E next();
    void remove(); //optional
}

インターフェース Iterator では、コンテナー内の要素を扱うメソッドを規定しています。また、これらのメソッドを利用した、次の《 事例》を紹介しています。

static void filter(Collection c) {
    for (Iterator it = c.iterator(); it.hasNext(); )
        if (!cond(it.next()))
            it.remove();
}

関数 filter は、引数に指定されたコレクション c から、関数 cond の条件を満たさない要素だけを削除します。ただし、その具体的な条件は、何も示されていません。そこで、便宜的に用意した次の関数を使って、説明を続けます。

>>> def cond(e): return e%2

関数 cond は、奇数/偶数を判定します。引数 e が奇数なら True を、偶数なら False をリターン値とします。

■ リスト:list
>>> def list_filter(c):
...     for e in c:
...         if not cond(e): c.remove(e)

関数 list_filter は、リスト c から、奇数でない要素を削除します。
 list 型の組み込みメソッド remove(value) は、リストから(より先頭の)要素 value を削除します。条件式 cond(e) を満たさないなら、要素 e を削除します。

>>> c = range(5)
>>> c
[0, 1, 2, 3, 4]
>>> list_filter(c)
>>> c
[1, 3]

list_filter を利用すると、リスト c から、奇数以外の要素(すべての偶数)が削除されたのが分かります。

Last updated♪2009/08/03