我想过滤CmisObjects的一个arraylist并将正确的对象(在过滤器中正确)放在另一个arraylist中。
我有6个需要检查的字段,分别是1个文本输入,3个选择框和2个日期输入。所以我想要与新arraylist中的字段中的值匹配的对象。
我检查了Stackoverflow上的其他问题,其中一些是类似的,但我想知道是否有人对某些示例代码有更明确的答案。
提前致谢!
EDIT 这是我现在的一些代码,它只检查2个字段。
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>();
for (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;
for (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>");
答案 0 :(得分:1)
如果我知道你在问什么,这似乎有点直截了当。如果所有6个参数都匹配,我猜你想要将对象添加到ArrayList<CmisObjects>
?如果是这样,你想要这样的东西(伪代码):
ArrayList<CmisObject> toReturn = new ArrayList<CmisObject>();
for(int i = 0; i < yourArrayListOfCmisObjects.size(); i++){
CmisObject obj = yourArrayListOfCmisObjects.get(i);
if(obj.getParam1() == param1 && obj.getParam2() == param2 && ... obj.getParam6() == param6){
toReturn.add(obj);
}
}
然后你可以从那里操纵返回。希望这有帮助!
===
编辑:您可以合并很多if语句,并且非常公平,您可以将它们分解为boolean
表达式。
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);
}