gpt4 book ai didi

java - 比较文件中的值在 java 中不起作用

转载 作者:行者123 更新时间:2023-12-02 11:20:46 25 4
gpt4 key购买 nike

目前,我遇到了有关比较文本文件中的值的问题。以下是我的要求,我能说的是有点独特。

我收到一个文本文件,其中包含以下格式的数据。这些行是一系列特定格式的数字。

223---其他行值

354---其他行值

756---其他行值

754---其他行值

854---其他行值

923---其他行值

我必须验证所有行是否都按 2、3、7、8、9 的顺序开始。 2 和 9 之间可以有多行,以 2,3,7,7,8,3,7,7,8,9 开头。保证第 2 行和第 9 行将是文件中的第一行和最后一行。 3 和 8 之间可以出现多个 7。

我想出了下面的比较逻辑,但该逻辑仅适用于以 2,3,7,7,8,9 开头的行的一种组合。

当像 2,3,7,7,8,3,7,7,8,9 这样的行多次出现时,它不起作用。有人可以帮我解决这里出了什么问题以及如何解决这个问题。如果有更好的选择或任何其他更好的方法来满足我的要求,请提出建议,以便我可以使用它。输入文件的数量并不高,大概有10到2万个。

 Set<String> recordTypeOrder = new HashSet<>();

BufferedReader rdr = new BufferedReader(new StringReader("path to my file here"));

for (String line = rdr.readLine(); line != null; line = rdr.readLine()) {
if(line.startsWith("2")){
recordTypeOrder.add("2");

}else if(line.startsWith("3")){
recordTypeOrder.add("3");

}else if(line.startsWith("7")){
recordTypeOrder.add("7");

}else if(line.startsWith("8")){
recordTypeOrder.add("8");

}else if(line.startsWith("9")){
recordTypeOrder.add("9");
}
}

Set<String> orderToCompare = new TreeSet<>(recordTypeOrder);
boolean compare = orderToCompare.equals(actualOrder());
if(!compare){
logger.info("== Processing failed =====");
throw new CustomException("======= Processing failed =======");
}

private static Set<String> actualOrder(){

Set<String> actualOrder= new HashSet<>();
actualOrder.add("2");
actualOrder.add("3");
actualOrder.add("7");
actualOrder.add("8");
actualOrder.add("9");
return actualOrder;
}

非常感谢

最佳答案

您需要存储 3,7,7,8 的订单和数量。我认为 treeset 不起作用。您可以尝试其他数据结构,例如LinkedHashMap。这样您就可以将所需的数据存储在 LinkedHashMap 中,然后编写自定义函数来验证它。

关于java - 比较文件中的值在 java 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49935651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com