2009-08-17 9 views
1

je suit objet javafiltrage dynamique de l'objet java

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

A: 
-- 
String A_ID; 
String A_PROPERTY; 

Ce que je cherche est d'être en mesure de rechercher dans un objet donné. ex: recherche dans une liste où A.A_ID = 123

Je dois passer dynamiquement

A_ID = 123 

et il me donnerait

A_Property

Je sais que je pourrais chercher dans une liste à travers l'itérateur, mais existe-t-il déjà des frameworks qui vous permettent de faire cela?

grâce

+0

Pourriez-vous élaborer un peu plus? – Diones

Répondre

2

lambdaj est une bibliothèque très agréable pour Java 5.

Par exemple:

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); 

il est possible de filtrer ceux ayant plus de 30 années appliquant le filtre suivant:

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

C'est très gentil – djna

0

Quelque chose comme Quaere. De leur site:

Quaere est un framework extensible open source qui ajoute une syntaxe d'interrogation qui rappelle les applications SQL vers Java. Quaere vous permet de filtrer, d'énumérer et de créer des projections sur un certain nombre de collections et d'autres ressources interrogeables en utilisant une syntaxe commune et expressive.

0

Pourquoi avez-vous besoin d'un cadre? Que diriez-vous

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

Hashmap si vous recherchez uniquement par une propriété qui a le même type pour chaque objet inputed. Par exemple, une chaîne. L'objet 1 a la chaîne "Obj1" pour la clé et le deuxième objet a la chaîne "Test2" pour la clé. Lorsque vous utilisez la méthode get avec le paramètre "Obj1", il retournera le premier objet. P.S. C'est vraiment difficile de lire votre "pseudo-code".

-1

Utilisation d'un 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); 

plus tard

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

en utilisant une carte, vous perdrez tous les avantages de typage statique – dfa

+0

@dfa: Pour une telle question ambiguë, je pense vraiment que le mien est une bonne réponse. – OscarRyz