有什么方法可以优化这个循环?

时间:2017-02-02 10:43:04

标签: java if-statement while-loop nested

所以我正在编写一个程序,它从不同的文件中读取日志,按给定的状态对它们进行排序,并将它们输出到相应的文件中。有约。任何时候8-10k日志,我现在有这个wile循环来检查他们的状态:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<h3>wp_query 1 output:</h3>
<div class="wrap">
  <div class="normal">Normal</div>
  <div class="normal">Normal</div>
  <div class="featured">A featured item</div>
  <div class="normal">Normal</div>
  <div class="featured">A featured item</div>
  <div class="normal">Normal</div>
</div>

<h3>wp_query 2 output:</h3>
<div class="wrap">
  <div class="normal">Normal</div>
  <div class="normal">Normal</div>
  <div class="normal">Normal</div>
  <div class="normal">Normal</div>
</div>

我只是想知道这是否可以以任何方式得到改善,如果可能的话,即使稍微快一点也会很好

提前致谢

1 个答案:

答案 0 :(得分:0)

您的if语句可以融合到switch/case语句中:

private void SortByStatus(TreeSet<Log> allLogs) {
    Iterator<Log> iter = allLogs.iterator();
    while(iter.hasNext()){
        Log temp = iter.next();
        switch(temp.getLogStatus()) {
            case Log.Status.INFO :
                INFOlogs.add(temp);
                break;
            case Log.Status.WARN :
                WARNlogs.add(temp);
                break;
            case Log.Status.DEBUG :
                DEBUGlogs.add(temp);
                break;
            case Log.Status.ERROR :
                ERRORlogs.add(temp);
                break;
            default :
                // do nothing? raise error?
    } 
}

性能提升将是最小的,但这将避免在日志级别为INFO时执行4次测试(使用else if语句也可以避免这种情况)。