Tuesday, 15 April 2014

Filtering a list in Java and put the results in a new arraylist -



Filtering a list in Java and put the results in a new arraylist -

i want filter arraylist of cmisobjects , set objects right (correct filter) in arraylist.

i have 6 fields need checked 1 text input, 3 select boxes , 2 date inputs. want objects match values in fields in new arraylist.

i checked other questions on stackoverflow, of them similar want know if has clearer reply maybe illustration code.

thanks in advance!

edit here code have now, checks 2 fields.

string zoekterm = request.getparameter("zoekterm").tolowercase(); string zoektermselect = request.getparameter("zoektermselect"); string startdatum = request.getparameter("startdatum"); string einddatum = request.getparameter("einddatum"); string status = request.getparameter("status"); string type = request.getparameter("type"); arraylist<cmisobject> alledossiers = (arraylist<cmisobject>) request.getsession().getattribute("alledossiers"); arraylist<cmisobject> filterlist = new arraylist<cmisobject>(); (cmisobject dossier : alledossiers) { string dossiernaam = dossier.getname().tolowercase(); string dossierexternepartij = ((string) dossier.getpropertyvalue("oc:bedrijfsnaam")).tolowercase();; string dossierstatus = ((string) dossier.getpropertyvalue("oc:contractstatus")); string dossiertype = ((string) dossier.getpropertyvalue("oc:contracttype")); if (zoektermselect.equals("alle")) { if (dossiernaam.contains(zoekterm) || dossierexternepartij.contains(zoekterm)) { filterlist.add(dossier); } } if (zoektermselect.equals("dossiernaam")) { if (dossiernaam.contains(zoekterm)) { filterlist.add(dossier); } } if (zoektermselect.equals("externe partij")) { if (dossierexternepartij.contains(zoekterm)) { filterlist.add(dossier); } } } printwriter out = response.getwriter(); out.println("<html><head></head><body>"); int counter = 1; (cmisobject dossier : filterlist) { out.println("<div id='noderef" + counter + "'>" + dossier.getid() + "</div>"); out.println("<div id='dossiernaam" + counter + "'>" + dossier.getname() + "</div>"); out.println("<div id='externepartij" + counter + "'>" + dossier.getpropertyvalue("oc:bedrijfsnaam") + "</div>"); out.println("<div id='contracttype" + counter + "'>" + dossier.getpropertyvalue("oc:contracttype") + "</div>"); counter++; } out.println("<div id='counter'>" + counter + "</div></body></html>");

this seems straightforward if know you're asking. i'm guessing want add together objects arraylist<cmisobjects> if 6 parameters match? if so, want (pseudocode):

arraylist<cmisobject> toreturn = new arraylist<cmisobject>(); for(int = 0; < yourarraylistofcmisobjects.size(); i++){ cmisobject obj = yourarraylistofcmisobjects.get(i); if(obj.getparam1() == param1 && obj.getparam2() == param2 && ... obj.getparam6() == param6){ toreturn.add(obj); } }

and can manipulate toreturn there. hope helps!

===

edit: can consolidate lot of if statements, , fair, break them boolean expressions.

boolean bool1 = (zoektermselect.equals("alle") && (dossiernaam.contains(zoekterm) || dossierexternepartij.contains(zoekterm)); boolean bool2 = (zoektermselect.equals("dossiernaam") && dossiernaam.contains(zoekterm); boolean bool3 = zoektermselect.equals("externe partij") && dossierexternepartij.contains(zoekterm); if(bool1 || bool2 || bool3){ filterlist.add(dossier); }

java list arraylist filter

No comments:

Post a Comment