动态过滤java对象

时间:2009-08-17 23:04:30

标签: java oop

我有以下java对象

Obj:
----
String id;
List<A>;

A:
--
String A_ID;
String A_PROPERTY;

我正在寻找的是能够搜索给定的对象。例如:在A.A_ID = 123

的列表中搜索

我需要动态传递

A_ID = 123 

它会给我

A_Property

我知道我可以通过迭代器搜索列表,但是那里有框架可以让你这样做吗?

感谢

5 个答案:

答案 0 :(得分:2)

lambdaj是一个非常好的Java 5库。

例如:

Person me = new Person("Mario", "Fusco", 35);
Person luca = new Person("Luca", "Marrocco", 29);
Person biagio = new Person("Biagio", "Beatrice", 39);
Person celestino = new Person("Celestino", "Bellone", 29);
List<Person> people = asList(me, luca, biagio, celestino);

可以过滤使用以下过滤器的超过30年的过滤器:

List<Person> over30 = filter(having(on(Person.class).getAge(), greaterThan(30)), people);

答案 1 :(得分:0)

Quaere之类的东西。从他们的网站:

Quaere是一个开源的,可扩展的框架,它为Java应用程序添加了一个让人想起SQL的查询语法。 Quaere允许您使用通用的,富有表现力的语法对多个集合和其他可查询资源进行过滤,枚举和创建投影。

答案 2 :(得分:0)

为什么需要一个框架?怎么样

public String lookupPropertyById(String id)
{
    for (A a : myList)
    {
        if (id.equals(a.id))
            return a.property;
    }
    return null;   // not found
}

答案 3 :(得分:0)

Hashmap如果您只搜索每个输入对象具有相同类型的一个属性。例如,一个字符串。 对象1具有键的字符串“Obj1”,第二个对象具有字符串“Test2”  为了钥匙。当您使用带参数“Obj1”的get方法时,它将返回第一个对象。 附:读“你的伪代码”真的很难。

答案 4 :(得分:-1)

使用hashmap。

Map<String,A> map = new HashMap<String,A>();

A a = new A();
a.id = "123";
a.property="Hello there!";

map.put( a.id , a ); 

map.get( "123"); // would return the instance of A and then a.property will return "Hello there!"