首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >条件清单?

条件清单?
EN

Stack Overflow用户
提问于 2022-01-08 20:49:10
回答 2查看 134关注 0票数 0

我有一个表达式数组列表和一个对这些文件进行筛选的文件数组列表;这个过滤器也将是Arraylist ->。

假设我有一个数组列表,其中包含4个文件文件,例如文件文本文件,我有以下3个表达式/条件:

X,O,Z

为了将其中一个文件移动到筛选器数组列表中,必须在文件中验证这三个条件。

代码语言:javascript
复制
ArrayList<String> XpathExpression= new ArrayList<String>();
ArrayList<File> FilterdFiles= new ArrayList<File>();
File folder = new File("Path for many files");
        File[] files = folder.listFiles();
        for (File file : files) {
            
            if(file.isFile() && file.getName().endsWith(".txt")) {
                
                //Parser here

                /*******Get attribute values******/
                
                for(String xpathExp: XpathExpression) {

                    if(what I have to write in the if statment to check that the three conditions are valid for the current file so i can add it to the FilterdFiles.) {
                        
                        FilterdFiles.add(file);
                    
                        }
                    
                    else
                        
                    continue;
                        } 

为了检查这三个条件对当前文件是否有效,我必须在if语句中写入,这样我就可以将它添加到FilterdFiles中。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-01-09 01:04:24

我不能根据您的代码给出解决方案,因为它不包含足够的信息。但是我可以给你一个例子来帮助你解决你的问题。

下面的代码将从包含其他数组中所有字符串的列表中添加字符串。我使用匹配的标志来跟踪火柴。

代码语言:javascript
复制
import java.util.*;

public class Main{
    public static void main(String[] args) {
        String[] files = {"cat and dog", "dog", "fish dog cat", "apple", "peach"};
        String[] expressions = {"dog", "cat"};
        ArrayList<String> filtered = new ArrayList<>();
        
        for(String f: files){
            boolean matched = true;
            for(String e: expressions){
                if (!f.contains(e)) { 
                    matched = false;
                    break;
                }
            }
            if (matched)  filtered.add(f);
        }
        
        System.out.println(filtered);
    }
}

输出:

代码语言:javascript
复制
[cat and dog, fish dog cat]
票数 1
EN

Stack Overflow用户

发布于 2022-01-09 01:00:18

如果所有条件都必须匹配,则可以编写另一个类似于此的验证方法:

代码语言:javascript
复制
private boolean validate(File file, ArrayList<String> XpathExpression){
   for(String xpathExp: XpathExpression){
       boolean validateResult = validate file with xpathExp;
       if(validateResult != true){
           return false;
       }
   }
   return true;
}

如果validate(file, XpathExpression)返回true,则将文件添加到筛选数组列表中。或验证是否有任何xpathExp匹配:

代码语言:javascript
复制
private boolean validate(File file, ArrayList<String> XpathExpression){
   for(String xpathExp: XpathExpression){
       boolean validateResult = validate file with xpathExp;
       if(validateResult == true){
           return true;
       }
   }
   return false;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70636327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档