好的,我确信我不会以最有效的方式解决这个问题,我正在寻求一些有关如何更有效地做到这一点的帮助......
以下是我目前的情况
这是我真的不喜欢的最后一部分。它运作良好,但它看起来笨拙和低效。由于我的ArrayList是使用TreeSet构造的,因此它按排序顺序排列。我想使用更优雅和确定性的方法将我的键映射到要执行的测试。任何人都可以帮助我吗?
答案 0 :(得分:1)
我会做其他事情,因为你需要做的就是测试它的条目。
我会逐行采用并在其上应用正则表达式,从我看到它只是两个组和一个正面的前瞻将非常简单,这样我只能提取所有匹配的行并创建一个ArrayList中的那些,然后迭代ArrayList并测试每个方法。如果您可以提供文件外观的一些输入,我可以帮助您使用代码。
<强>更新强>
例如,这里是我提出的代码(在5分钟内可以改进),它将进行解析:
/**
*
* @param inputFile location of inputFile
* @return {@link ImmutableSet} of tests to run
*/
public static ImmutableSet<String> parseConfigFile(File inputFile){
HashSet<String> innerSet = Sets.newHashSet();
BufferedReader bufferedReader = null;
try {
bufferedReader = new BufferedReader(new FileReader(inputFile));
String newLine = "";
while( (newLine = bufferedReader.readLine()) != null){
Pattern p = Pattern.compile("(.+)=(?=yes|1|true)(.+)");
Matcher m = p.matcher(newLine);
while(m.find()){
//System.out.println(m.group(1));
innerSet.add(m.group(1));
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(bufferedReader != null)
try {
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return ImmutableSet.copyOf(innerSet);
}
我为它测试了一个看起来像这样的文件:
SomeTest=true
SomeOtherTest=false
YetAnotherTest=1
LastTest=yes
GogoTest=no
OneMore=0
答案 1 :(得分:0)
答案是创建一个HashMap <String, Method>
对象。