code: package resa.optimize;
  
  /**
   * Created by ding on 14-5-6.
   */
  public class QueueAggResult implements Cloneable {
  
      private long arrivalCount;
      private long totalQueueLength;
      private int totalSampleCount;
  
      public QueueAggResult(long arrivalCount, long totalQueueLength, int totalSampleCount) {
          this.arrivalCount = arrivalCount;
          this.totalQueueLength = totalQueueLength;
          this.totalSampleCount = totalSampleCount;
      }
  
      public QueueAggResult() {
          this(0, 0, 0);
      }
  
      public double getAvgQueueLength() {
          return totalSampleCount > 0 ? (double) totalQueueLength / (double) totalSampleCount : 0.0;
      }
  
      public long getArrivalCount() {
          return arrivalCount;
      }
  
      public long getTotalQueueLength() {
          return totalQueueLength;
      }
  
      public int getTotalSampleCount() {
          return totalSampleCount;
      }
  
      public void add(QueueAggResult result) {
          this.arrivalCount += result.arrivalCount;
          this.totalQueueLength += result.totalQueueLength;
          this.totalSampleCount += result.totalSampleCount;
      }
  
      public void add(long arrivalCount, long totalQueueLength, int totalSampleCount) {
          this.arrivalCount += arrivalCount;
          this.totalQueueLength += totalQueueLength;
          this.totalSampleCount += totalSampleCount;
      }
  
      @Override
      public String toString() {
          return String.format("arrCount: %d, totalQLen: %d, totalSamCnt: %d", arrivalCount,
                  totalQueueLength, totalSampleCount);
      }
  }
  