Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit c9f5d6d

Browse files
ArrayRanges: remove duplicate solution, enhance existing solution
1 parent e944b56 commit c9f5d6d

File tree

4 files changed

+27
-102
lines changed

4 files changed

+27
-102
lines changed

‎src/main/java/by/andd3dfx/common/ArrayRanges.java‎

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
/**
1111
* <pre>
12-
* Build string with ranges for defined list:
12+
* Build string with ranges for (unsorted) list of natural numbers:
1313
* [1,4,5,2,3,9,8,11,0] => "0-5,8-9,11"
1414
* [1,4,3,2] => "1-4"
1515
* [1,4] => "1,4"
@@ -20,9 +20,17 @@
2020
public class ArrayRanges {
2121

2222
@AllArgsConstructor
23-
public class Range {
23+
public staticclass Range {
2424
private int left;
2525
private int right;
26+
27+
@Override
28+
public String toString() {
29+
if (left == right) {
30+
return String.valueOf(left);
31+
}
32+
return left + "-" + right;
33+
}
2634
}
2735

2836
public String compact(int[] values) {
@@ -47,12 +55,7 @@ public String compact(int[] values) {
4755
}
4856

4957
return ranges.stream()
50-
.map(range -> {
51-
if (range.left == range.right) {
52-
return String.valueOf(range.left);
53-
}
54-
return range.left + "-" + range.right;
55-
})
58+
.map(Range::toString)
5659
.collect(Collectors.joining(","));
5760
}
5861
}

‎src/main/java/by/andd3dfx/common/JoinIntervals.java‎

Lines changed: 0 additions & 56 deletions
This file was deleted.

‎src/test/java/by/andd3dfx/common/ArrayRangesTest.java‎

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,28 +14,39 @@ public void setup() {
1414
ranges = new ArrayRanges();
1515
}
1616

17+
@Test
18+
public void compactWhenEmptyList() {
19+
assertThat(ranges.compact(new int[]{}))
20+
.isEqualTo("");
21+
}
22+
1723
@Test
1824
public void compactWhenOneNumber() {
19-
assertThat(ranges.compact(new int[]{1})).isEqualTo("1");
25+
assertThat(ranges.compact(new int[]{1}))
26+
.isEqualTo("1");
2027
}
2128

2229
@Test
2330
public void compactWhenNoIntervals() {
24-
assertThat(ranges.compact(new int[]{1, 4})).isEqualTo("1,4");
31+
assertThat(ranges.compact(new int[]{1, 4}))
32+
.isEqualTo("1,4");
2533
}
2634

2735
@Test
2836
public void compactForOneInterval() {
29-
assertThat(ranges.compact(new int[]{1, 4, 3, 2})).isEqualTo("1-4");
37+
assertThat(ranges.compact(new int[]{1, 4, 3, 2}))
38+
.isEqualTo("1-4");
3039
}
3140

3241
@Test
3342
public void compactForIntervals() {
34-
assertThat(ranges.compact(new int[]{1, 4, 5, 2, 3, 9, 8, 11, 0})).isEqualTo("0-5,8-9,11");
43+
assertThat(ranges.compact(new int[]{1, 4, 5, 2, 3, 9, 8, 11, 0}))
44+
.isEqualTo("0-5,8-9,11");
3545
}
3646

3747
@Test
3848
public void compactForIntervalsWithDuplicates() {
39-
assertThat(ranges.compact(new int[]{1, 4, 5, 2, 3, 9, 5, 8, 2, 11, 0})).isEqualTo("0-5,8-9,11");
49+
assertThat(ranges.compact(new int[]{1, 4, 5, 2, 3, 9, 5, 8, 2, 11, 0}))
50+
.isEqualTo("0-5,8-9,11");
4051
}
4152
}

‎src/test/java/by/andd3dfx/common/JoinIntervalsTest.java‎

Lines changed: 0 additions & 33 deletions
This file was deleted.

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /