@Override public int hashCode() { int hash = 7; hash = 29 * hash + this.size; int realSize = size * 2; for (int i = 0; i < realSize; i++) { double t = this.array[i]; hash = 29 * hash + (int) (Double.doubleToLongBits(t) ^ (Double.doubleToLongBits(t) >>> 32)); if (i % 2 == 0) { Object obj = this.getValue(i / 2); hash = 29 * hash + obj.hashCode(); } } return hash; }
@Override public int hashCode() { int hash = 7; hash = 29 * hash + this.size; int realSize = size * 2; for (int i = 0; i < realSize; i++) { double t = this.array[i]; hash = 29 * hash + (int) (Double.doubleToLongBits(t) ^ (Double.doubleToLongBits(t) >>> 32)); if (i % 2 == 0) { Object obj = this.getValue(i / 2); hash = 29 * hash + obj.hashCode(); } } return hash; }
@Override public boolean equals(Object obj) { if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } final IntervalMap<?> other = (IntervalMap<?>) obj; if (this.size != other.size) { return false; } int realSize = size * 2; for (int i = 0; i < realSize; i++) { double i1 = this.array[i]; double i2 = other.array[i]; if (i1 != i2) { return false; } if (i % 2 == 0) { Object o1 = this.getValue(i / 2); Object o2 = other.getValue(i / 2); if ((o1 == null && o2 != null) || (o1 != null && o2 == null) || (o1 != null && o2 != null && !o1 .equals(o2))) { return false; } } } return true; }
@Override public boolean equals(Object obj) { if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } final IntervalMap<?> other = (IntervalMap<?>) obj; if (this.size != other.size) { return false; } int realSize = size * 2; for (int i = 0; i < realSize; i++) { double i1 = this.array[i]; double i2 = other.array[i]; if (i1 != i2) { return false; } if (i % 2 == 0) { Object o1 = this.getValue(i / 2); Object o2 = other.getValue(i / 2); if ((o1 == null && o2 != null) || (o1 != null && o2 == null) || (o1 != null && o2 != null && !o1 .equals(o2))) { return false; } } } return true; }
protected Double getMaxDouble(final Interval interval) { if (size == 0) { return null; } int[] intervals = getOverlappingIntervals(interval.getLow(), interval.getHigh()); if (intervals.length == 0) { return null; } double max = Double.NEGATIVE_INFINITY; for (int i = 0; i < intervals.length; i++) { double val = ((Number) getValue(intervals[i])).doubleValue(); max = Math.max(val, max); } return max; }
protected Double getMinDouble(final Interval interval) { if (size == 0) { return null; } int[] intervals = getOverlappingIntervals(interval.getLow(), interval.getHigh()); if (intervals.length == 0) { return null; } double min = Double.POSITIVE_INFINITY; for (int i = 0; i < intervals.length; i++) { double val = ((Number) getValue(intervals[i])).doubleValue(); min = Math.min(val, min); } return min; }
protected Double getMinDouble(final Interval interval) { if (size == 0) { return null; } int[] intervals = getOverlappingIntervals(interval.getLow(), interval.getHigh()); if (intervals.length == 0) { return null; } double min = Double.POSITIVE_INFINITY; for (int i = 0; i < intervals.length; i++) { double val = ((Number) getValue(intervals[i])).doubleValue(); min = Math.min(val, min); } return min; }
protected Double getMaxDouble(final Interval interval) { if (size == 0) { return null; } int[] intervals = getOverlappingIntervals(interval.getLow(), interval.getHigh()); if (intervals.length == 0) { return null; } double max = Double.NEGATIVE_INFINITY; for (int i = 0; i < intervals.length; i++) { double val = ((Number) getValue(intervals[i])).doubleValue(); max = Math.max(val, max); } return max; }
protected BigDecimal getAverageBigDecimal(final Interval interval) { if (size == 0) { return null; } int[] intervals = getOverlappingIntervals(interval.getLow(), interval.getHigh()); if (intervals.length == 0) { return null; } double[] weights = getIntervalsWeight(interval.getLow(), interval.getHigh(), intervals); BigDecimal result = new BigDecimal(0.0); BigDecimal period = new BigDecimal(0.0); for (int i = 0; i < intervals.length; i++) { BigDecimal w = new BigDecimal(weights[i]); period = period.add(w); w = w.multiply(new BigDecimal(((Number) getValue(intervals[i])).doubleValue())); result = result.add(w); } return result.divide(period, 10, RoundingMode.HALF_EVEN); }
protected BigDecimal getAverageBigDecimal(final Interval interval) { if (size == 0) { return null; } int[] intervals = getOverlappingIntervals(interval.getLow(), interval.getHigh()); if (intervals.length == 0) { return null; } double[] weights = getIntervalsWeight(interval.getLow(), interval.getHigh(), intervals); BigDecimal result = new BigDecimal(0.0); BigDecimal period = new BigDecimal(0.0); for (int i = 0; i < intervals.length; i++) { BigDecimal w = new BigDecimal(weights[i]); period = period.add(w); w = w.multiply(new BigDecimal(((Number) getValue(intervals[i])).doubleValue())); result = result.add(w); } return result.divide(period, 10, RoundingMode.HALF_EVEN); }
protected Object getFirst(final Interval interval) { if (size == 0) { return null; } int[] intervals = getOverlappingIntervals(interval.getLow(), interval.getHigh()); if (intervals.length == 0) { return null; } return getValue(intervals[0]); }
@Override public T get(Interval interval, T defaultValue) { final int index = getIndex(interval.getLow(), interval.getHigh()); if (index >= 0) { return getValue(index / 2); } return defaultValue; }
@Override public T get(Interval interval, T defaultValue) { final int index = getIndex(interval.getLow(), interval.getHigh()); if (index >= 0) { return getValue(index / 2); } return defaultValue; }
protected Object getLast(final Interval interval) { if (size == 0) { return null; } int[] intervals = getOverlappingIntervals(interval.getLow(), interval.getHigh()); if (intervals.length == 0) { return null; } return getValue(intervals[intervals.length - 1]); }
protected Object getFirst(final Interval interval) { if (size == 0) { return null; } int[] intervals = getOverlappingIntervals(interval.getLow(), interval.getHigh()); if (intervals.length == 0) { return null; } return getValue(intervals[0]); }
protected Object getLast(final Interval interval) { if (size == 0) { return null; } int[] intervals = getOverlappingIntervals(interval.getLow(), interval.getHigh()); if (intervals.length == 0) { return null; } return getValue(intervals[intervals.length - 1]); }
protected Double getAverageDouble(final Interval interval) { if (size == 0) { return null; } int[] intervals = getOverlappingIntervals(interval.getLow(), interval.getHigh()); if (intervals.length == 0) { return null; } double[] weights = getIntervalsWeight(interval.getLow(), interval.getHigh(), intervals); double result = 0.0, period = 0.0; for (int i = 0; i < intervals.length; i++) { double w = weights[i]; period += w; w *= ((Number) getValue(intervals[i])).doubleValue(); result += w; } return result / period; }
protected Double getAverageDouble(final Interval interval) { if (size == 0) { return null; } int[] intervals = getOverlappingIntervals(interval.getLow(), interval.getHigh()); if (intervals.length == 0) { return null; } double[] weights = getIntervalsWeight(interval.getLow(), interval.getHigh(), intervals); double result = 0.0, period = 0.0; for (int i = 0; i < intervals.length; i++) { double w = weights[i]; period += w; w *= ((Number) getValue(intervals[i])).doubleValue(); result += w; } return result / period; }