Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Java过滤列表并将结果放入新的arraylist_Java_List_Arraylist_Filter - Fatal编程技术网

用Java过滤列表并将结果放入新的arraylist

用Java过滤列表并将结果放入新的arraylist,java,list,arraylist,filter,Java,List,Arraylist,Filter,我想过滤一个CmisObjects的arraylist,并将正确的对象(使用过滤器正确)放在另一个arraylist中 我有6个需要检查的字段,分别是1个文本输入、3个选择框和2个日期输入。因此,我希望对象与新arraylist中字段中的值匹配 我检查了Stackoverflow上的其他问题,其中一些问题是类似的,但我想知道是否有人有一个更清晰的答案,也许有一些示例代码 提前谢谢 编辑 这是我现在的一些代码,它只检查2个字段 String zoekterm = request.getPa

我想过滤一个CmisObjects的arraylist,并将正确的对象(使用过滤器正确)放在另一个arraylist中

我有6个需要检查的字段,分别是1个文本输入、3个选择框和2个日期输入。因此,我希望对象与新arraylist中字段中的值匹配

我检查了Stackoverflow上的其他问题,其中一些问题是类似的,但我想知道是否有人有一个更清晰的答案,也许有一些示例代码

提前谢谢

编辑 这是我现在的一些代码,它只检查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>");
String zoekterm=request.getParameter(“zoekterm”).toLowerCase();
字符串zoektermselect=request.getParameter(“zoektermselect”);
字符串startdatum=request.getParameter(“startdatum”);
字符串einddatum=request.getParameter(“einddatum”);
字符串状态=request.getParameter(“状态”);
字符串类型=request.getParameter(“类型”);
ArrayList alleDossiers=(ArrayList)request.getSession().getAttribute(“alleDossiers”);
ArrayList filterlist=新建ArrayList();
用于(CmisObject档案:所有档案){
字符串dossiernaam=dossier.getName().toLowerCase();
字符串dossierexternepartij=((字符串)dossier.getPropertyValue(“oc:bedrijfsnaam”)).toLowerCase();;
字符串dossierstatus=((字符串)dossier.getPropertyValue(“oc:contractstatus”);
字符串dossiertype=((字符串)dossier.getPropertyValue(“oc:contracttype”);
if(zoektermselect.equals(“Alle”)){
if(档案名称包含(zoekterm)| |档案名称包含(zoekterm)){
过滤器列表。添加(档案);
}
}
if(zoektermselect.equals(“dossiernam”)){
如果(档案名称包含(zoekterm)){
过滤器列表。添加(档案);
}
}
if(zoektermselect.equals(“外部部分”)){
if(包含(zoekterm)的文件){
过滤器列表。添加(档案);
}
}
}
PrintWriter out=response.getWriter();
out.println(“”);
int计数器=1;
用于(CmisObject档案:过滤器列表){
out.println(“+dossier.getId()+”);
out.println(“+dossier.getName()+”);
out.println(“+dossier.getPropertyValue”(“oc:bedrijfsnaam”)+”);
out.println(“+dossier.getPropertyValue(“oc:contracttype”)+”);
计数器++;
}
out.println(“+计数器+”);

如果我知道你的问题,这似乎有点直截了当。我猜如果所有6个参数都匹配,您想将对象添加到
ArrayList
?如果是这样,您需要这样的内容(伪代码):


你有密码吗?你做了什么tried@TFischer到目前为止,我一直在想它是如何工作的,因为我知道的唯一方法是为我所知道的每一种可能性编码一个“如果”,但它也必须工作,例如,如果只填充了3个字段Yes,这会稍微清理代码。但是,例如,如果没有填写“zoekterm”字段,但是“status”选择字段设置为一个值,那么它仍然必须找到与“status”选择字段匹配的对象。
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); 
    }
}
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);
}