ペンギン野球のオリジナル[yetisports.org]

この間のペンギン野球の元かな。 5回やって最高トータルスコアが現在1571.4点。 すごいな。 バウンス無しの最高スコアが1034.4点。 全部頭からつっこむってことですよね…。 てか、バウンス無しの最低スコアが96.3点なんですけど、こっちの方がすごいのでは? 真上に飛ばすんかな…。
ちなみに、ダウンロードもできるようになってます。 新しいバージョンも出てくる様子…。

commons-collectionsのListUtils.lazyList

昨日書いたNested Propertyなんですけど、Listがダイナミックに作成されるわけで、Strutsはアホなので新しいform beanを作ろうにもlistのサイズなんか知らないんですね。 そこで便利なのが、commons-collections パッケージ[jakarta.apache.org]にあるリストラッパーです。例えばlistのサイズが3で、インデックス7をリクエストしたら、factoryオブジェクトを使って自動的にサイズ7まで増やしてくれるんです。
使い方は簡単。


import org.apache.struts.action.ActionForm;
import org.apache.commons.collections.Factory;
import org.apache.commons.collections.ListUtils;

import izu.beans.NameBean;
import java.util.List;
import java.util.ArrayList;

public class NameListForm extends ActionForm implements Factory {
private List nameList;

public NameListForm() {
nameList = ListUtils.lazyList(new ArrayList(), this); ←[訂正]nekopさん、サンキュ!
reset();
}

public void reset() {
nameList.add(new NameBean("Izumi", "Kamitani"));
nameList.add(new NameBean("Nadim", "Bitar"));
nameList.add(new NameBean("First", "Last"));
}

//Factoryクラスから
public Object create() {
return new NameBean();
}


public void setNameList(List nameList) {
this.nameList = nameList;
}

public List getNameList() {
return nameList;
}

public NameBean getName(int index) {
return (NameBean) nameList.get(index);
}
}

ListUtilsもFactoryもcommons-collectionsパッケージにはいってます。 APIはこちら[jakarta.apache.org]。 Mapを使う場合は、MapUtilsにlazyMapが用意されてます。