インスタンス化されているJavaBeanがArrayListに数百~数千入っています。その配列から特定のJavaBeanのメンバーの内容が一致しているオブジェクトだけ取り出したいです。イテレーターを使って1個1個取り出してチェックして・・・というプログラムをゴリゴリ書いても良いのですが、SQLみたいに一致した条件のオブジェクトをまとめて取得するなんて事はできないのでしょうか?

--- Goods.java ---
import java.io.*;
public class Goods implements Serializable{
private String name;
private double price;
private int stock;

public Goods(){
}

public Goods( String name, double price, int stock ){
this.name = name;
this.price = price;
this.stock = stock;
}

public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public int getStock() {
return stock;
}
public void setStock(int stock) {
this.stock = stock;
}
}

というBeanがあり、仮に下記ロジックでaddし検索
--- mainlogic ---
ArrayList<Goods> goodsList = new ArrayList<Goods>();
goodsList.add( new Goods("ABC",123,10) );
goodsList.add( new Goods("DEF",456, 0) ); // ←該当オブジェクト
goodsList.add( new Goods("GHI",789,15) );
goodsList.add( new Goods("JKL",987, 0) ); // ←該当オブジェクト
・・・
// ここでgoodsListに入っているGoodsオブジェクトのメンバーstock(在庫数)が0のGoodsオブジェクトを取得したい
・・・

という感じなのですが、SQLなら"SELECT * FROM goodsList WHERE Goods.stock = 0"で簡単に抽出できるのですが、このような事ってできないですよね?
やはり、イテレーターで全件検索か、一旦、オブジェクトをDBに書き出して取り出すという事しかできないですよね?

他に何か良い方法などありましたら、ご教授お願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

他のライブラリに頼るし,あまり手間かわらなそうだけど,


C#っぽく書くなら
org.apache.commons.collections.CollectionUtilクラスと
http://leda.science.uoit.ca/java-libraries/colle …

でPredicateインターフェースを実装した匿名クラスを使って書くかなあという気がする。実際やってないからわからないけど。
http://oshiete1.goo.ne.jp/qa4950019.html

#C#だとList<T>に直接FindAllメソッドがあるんだよなあ

##…っていう回答でいいのかなぁ

この回答への補足

実はCollectionsクラスやComparatorインターフェイスは検討材料として既にテストとかしてみたのですが、もっと簡潔にできないものかと模索しているところでした。

>>#C#だとList<T>に直接FindAllメソッドがあるんだよなあ
ですね。Javaでも標準APIにあると助かるのにと思いました。

補足日時:2009/05/14 15:15
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング