我正在为文本文件进行自定义验证。这是第一次对整个文件进行验证。如果有错误,则显示在另一个JTextArea中。之后,仅对那些可见的部分进行验证。我的问题是我无法存储以前的错误并结合当前显示的错误。例如,第一次,我得到错误 第1行,第5行,第6行,第100行,第500行。从下一次可见部分将是1-50行,验证将仅针对1-50进行,因此100和500的误差将消失。我通过将先前的错误存储在临时变量中来尝试它,接下来的问题是,现在私有错误将只变为1-50,有人可以告诉我如何去做吗?
我试过的代码,
private void displayError() {
errorText.setText(null);
String err = null;
try{
//tempErrors
if(!prevErrors.isEmpty()){
for(int i=0; i< prevErrors.size(); i++){
err = prevErrors.get(i).toString();
if(!errors.contains(err)){
errors.add(prevErrors.get(i).toString());
}
}
}
}
catch(Exception ex){
System.out.println(ex);
}
Iterator it = errors.iterator();
while(it.hasNext()){
errorText.append(it.next() + "\n");
}
prevErrors = new ArrayList();
for(int i=0; i< errors.size(); i++){
prevErrors.add(errors.get(i).toString());
}
}
答案 0 :(得分:5)
使用TreeMap
:
TreeMap<Integer, String>
并将其命名为errors
。 (键是行号,值是错误信息。)errors
- 地图中找到的错误(和行)当文件的一部分可见时,您可以使用subMap
方法来获取该部分中的错误:
SortedMap<Integer, String> visibleErrors = errors.subMap(fromLine, toLine + 1);