Repository: kylin Updated Branches: refs/heads/master f3a33673f -> 4a1bc1945
minor, refind a API in rangeutil class Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/2174af25 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/2174af25 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/2174af25 Branch: refs/heads/master Commit: 2174af259dbf53246bb366c1d605cf997b38c057 Parents: f3a3367 Author: lidongsjtu <[email protected]> Authored: Thu Apr 14 16:17:54 2016 +0800 Committer: lidongsjtu <[email protected]> Committed: Thu Apr 14 16:18:09 2016 +0800 ---------------------------------------------------------------------- .../org/apache/kylin/common/util/RangeUtil.java | 25 +++++++++++--------- .../apache/kylin/common/util/RangeUtilTest.java | 9 ++++++- 2 files changed, 22 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/2174af25/core-common/src/main/java/org/apache/kylin/common/util/RangeUtil.java ---------------------------------------------------------------------- diff --git a/core-common/src/main/java/org/apache/kylin/common/util/RangeUtil.java b/core-common/src/main/java/org/apache/kylin/common/util/RangeUtil.java index 96c6d9b..ae6cf51 100644 --- a/core-common/src/main/java/org/apache/kylin/common/util/RangeUtil.java +++ b/core-common/src/main/java/org/apache/kylin/common/util/RangeUtil.java @@ -21,8 +21,11 @@ package org.apache.kylin.common.util; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; +import java.util.Iterator; import java.util.List; import java.util.NavigableMap; +import java.util.Set; +import java.util.SortedSet; import com.google.common.collect.BoundType; import com.google.common.collect.Lists; @@ -198,23 +201,23 @@ public class RangeUtil { return sb.toString(); } - public static List<Range<Integer>> buildRanges(int[] values, boolean needSort) { - ArrayList ranges = Lists.newArrayList(); + public static ArrayList<Range<Integer>> buildRanges(SortedSet<Integer> values) { + ArrayList<Range<Integer>> ranges = Lists.newArrayList(); - if (values == null || values.length == 0) + if (values == null || values.isEmpty()) return ranges; - if (needSort) { - Arrays.sort(values); - } - int lastBegin = values[0]; + Iterator<Integer> iter = values.iterator(); + int lastBegin = iter.next(); int lastEnd = lastBegin; - for (int index = 1; index < values.length; index++) { - if (values[index] - lastEnd != 1) { + int temp = 0; + for (int index = 1; index < values.size(); index++) { + temp = iter.next(); + if (temp - lastEnd != 1) { ranges.add(Ranges.closed(lastBegin, lastEnd)); - lastBegin = values[index]; + lastBegin = temp; } - lastEnd = values[index]; + lastEnd = temp; } ranges.add(Ranges.closed(lastBegin, lastEnd)); return ranges; http://git-wip-us.apache.org/repos/asf/kylin/blob/2174af25/core-common/src/test/java/org/apache/kylin/common/util/RangeUtilTest.java ---------------------------------------------------------------------- diff --git a/core-common/src/test/java/org/apache/kylin/common/util/RangeUtilTest.java b/core-common/src/test/java/org/apache/kylin/common/util/RangeUtilTest.java index bc0937e..11bf4ad 100644 --- a/core-common/src/test/java/org/apache/kylin/common/util/RangeUtilTest.java +++ b/core-common/src/test/java/org/apache/kylin/common/util/RangeUtilTest.java @@ -21,13 +21,16 @@ package org.apache.kylin.common.util; import java.util.List; import java.util.Map; import java.util.NavigableMap; +import java.util.Set; import java.util.TreeMap; +import java.util.TreeSet; import org.junit.Assert; import org.junit.Test; import com.google.common.collect.Range; import com.google.common.collect.Ranges; +import com.google.common.collect.Sets; /** */ @@ -69,7 +72,11 @@ public class RangeUtilTest { @Test public void testBuildRanges() { int[] test1 = { 1, 2, 3, 5, 7, 8, 10, 4 }; - List<Range<Integer>> ranges = RangeUtil.buildRanges(test1, true); + TreeSet<Integer> treeSet = Sets.newTreeSet(); + for (int t : test1) { + treeSet.add(t); + } + List<Range<Integer>> ranges = RangeUtil.buildRanges(new TreeSet<Integer>(treeSet)); Assert.assertEquals(3, ranges.size()); } }
