java - 尝试查找属性文件中缺少 key 的 apt java 代码逻辑

标签 java

我有一个像这样的属性文件:

key1=value1
key2=value2
key3=value3

此属性文件使用枚举和 while 循环迭代来读取下一个元素。

与此并行的是,我在 for 循环中有一个字符串变量,其值每次迭代都会发生变化!

consider for first iteration,
string=key1
2nd iteration,
string=key2
3rd iteration,
string=key4
4th iteration,
string=key3
5th iteration,
string=key5.

由于属性文件中不存在key4key5,我想显示“key4”和“key5”

问题是我在使用枚举变量到达下一个元素时尝试使用 if(!string.equals(key)) ,但我遇到了重复的结果以及使用哈希设置为消除重复让我对正在尝试的逻辑方法感到困惑。

这里是一段代码

for (int i=0; i<bc.length; i++)
    {              
        Policy p[] = bc[i].getPolicies().getValue();
        String testcases = bc[i].getSearchPath().getValue(); 
        Enumeration<?> e1 = prop.propertyNames();
        while (e1.hasMoreElements())
        {
          key = (String) e1.nextElement();
          if(testcases.equals(key))
          { 
            System.out.println("match");
          } else
          {
            System.out.println("unmatched");
            set.add(testcases);//to eliminate duplicates
          }
        }
    }

最佳答案

这里:

while (e1.hasMoreElements()) {
  key = (String) e1.nextElement();
  if (testcases.equals(key)) {
    ... IN ...
  } else {
    ... OUT ...

这个逻辑根本就是有缺陷的。基本上,您拥有从中检索测试用例的数组,例如:

bc[i].getSearchPath().getValue(); 

然后您就有了属性,其中包含属性列表。您的代码执行以下操作:

  • 迭代所有“测试用例”
  • 迭代所有给定属性

每次属性键与测试用例匹配时,您都说“IN”。对于所有其他情况,则为“OUT”。这会给你太多的“OUT”输出错误

改用这个:

for (int i=0; i<bc.length; i++) {
  String matchingKey = null;
  while (e1.hasMoreElements()) {
    key = (String) e1.nextElement();
    if (testcases.equals(key)) {
      matchingKey = key;
      break;
    }
  } 
  if (matchingKey != null) {
    ... IN ...

  } else {   
   ... OUT ...      

感谢评论:如果不需要其他处理,您可以保存一些循环迭代并从该内部循环中中断

除此之外,如果您确实有许多测试用例需要检查 - 例如,一次处理属性名称并将它们推送到 HashSet 中可能是值得的。稍后只需使用 set.contains() 即可。

关于java - 尝试查找属性文件中缺少 key 的 apt java 代码逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44883331/

相关文章:

java - 从 Java 调用的 SQL Server 中的表变量问题

java - 随机获取org.json.JSONException : Value &lt;!类型为java.lang.String的DOCTYPE无法转换为JSONObject的错误

java - 使用 [ :punct:] function in java 的正则表达式

java - 在windows cmd中运行java程序。传递字符串arg

java - 正则表达式需要太多步骤

java - 错误包org.python.util不存在,使用ant进行编译

java - 使用 Java 中的首选项保存文件

java - 在 imageview 中显示来自 firebase 数据库的图像

java - 如何为java中的许多方法建立一个数据库连接?

java - 如何在 Java 中读取没有 ID 或 DIV 的 HTML 页面中的表格