Skip to content

Commit 6b96ead

Browse files
committed
Merge remote-tracking branch 'eugenp/master'
2 parents 670e4f3 + ed1edc9 commit 6b96ead

File tree

343 files changed

+4867
-1011
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

343 files changed

+4867
-1011
lines changed

JGit/src/main/java/com/baeldung/jgit/porcelain/Log.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,14 @@ public static void main(String[] args) throws IOException, GitAPIException {
2828
System.out.println("Had " + count + " commits overall on current branch");
2929

3030
logs = git.log()
31-
.add(repository.resolve("remotes/origin/testbranch"))
31+
.add(repository.resolve(git.getRepository().getFullBranch()))
3232
.call();
3333
count = 0;
3434
for (RevCommit rev : logs) {
3535
System.out.println("Commit: " + rev /* + ", name: " + rev.getName() + ", id: " + rev.getId().getName() */);
3636
count++;
3737
}
38-
System.out.println("Had " + count + " commits overall on test-branch");
38+
System.out.println("Had " + count + " commits overall on "+git.getRepository().getFullBranch());
3939

4040
logs = git.log()
4141
.all()

JGit/src/test/java/com/baeldung/jgit/JGitBugIntegrationTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
package com.baeldung.jgit;
2+
13
import com.baeldung.jgit.helper.Helper;
24
import org.eclipse.jgit.lib.ObjectLoader;
35
import org.eclipse.jgit.lib.ObjectReader;

algorithms-miscellaneous-1/pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@
1717
<artifactId>commons-math3</artifactId>
1818
<version>${commons-math3.version}</version>
1919
</dependency>
20+
<dependency>
21+
<groupId>com.google.guava</groupId>
22+
<artifactId>guava</artifactId>
23+
<version>${guava.version}</version>
24+
</dependency>
2025
<dependency>
2126
<groupId>commons-codec</groupId>
2227
<artifactId>commons-codec</artifactId>
@@ -73,6 +78,7 @@
7378
<commons-math3.version>3.6.1</commons-math3.version>
7479
<org.assertj.core.version>3.9.0</org.assertj.core.version>
7580
<commons-codec.version>1.11</commons-codec.version>
81+
<guava.version>25.1-jre</guava.version>
7682
</properties>
7783

7884
</project>
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
package com.baeldung.algorithms.factorial;
2+
3+
import java.math.BigInteger;
4+
import java.util.stream.LongStream;
5+
6+
import org.apache.commons.math3.util.CombinatoricsUtils;
7+
8+
import com.google.common.math.BigIntegerMath;
9+
10+
public class Factorial {
11+
12+
public long factorialUsingForLoop(int n) {
13+
long fact = 1;
14+
for (int i = 2; i <= n; i++) {
15+
fact = fact * i;
16+
}
17+
return fact;
18+
}
19+
20+
public long factorialUsingStreams(int n) {
21+
return LongStream.rangeClosed(1, n)
22+
.reduce(1, (long x, long y) -> x * y);
23+
}
24+
25+
public long factorialUsingRecursion(int n) {
26+
if (n <= 2) {
27+
return n;
28+
}
29+
return n * factorialUsingRecursion(n - 1);
30+
}
31+
32+
private Long[] factorials = new Long[20];
33+
34+
public long factorialUsingMemoize(int n) {
35+
36+
if (factorials[n] != null) {
37+
return factorials[n];
38+
}
39+
40+
if (n <= 2) {
41+
return n;
42+
}
43+
long nthValue = n * factorialUsingMemoize(n - 1);
44+
factorials[n] = nthValue;
45+
return nthValue;
46+
}
47+
48+
public BigInteger factorialHavingLargeResult(int n) {
49+
BigInteger result = BigInteger.ONE;
50+
for (int i = 2; i <= n; i++)
51+
result = result.multiply(BigInteger.valueOf(i));
52+
return result;
53+
}
54+
55+
public long factorialUsingApacheCommons(int n) {
56+
return CombinatoricsUtils.factorial(n);
57+
}
58+
59+
public BigInteger factorialUsingGuava(int n) {
60+
return BigIntegerMath.factorial(n);
61+
}
62+
63+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package com.baeldung.algorithms.string;
2+
3+
import java.util.HashMap;
4+
import java.util.HashSet;
5+
import java.util.Map;
6+
import java.util.Set;
7+
8+
public class LongestSubstringNonRepeatingCharacters {
9+
10+
public static String getUniqueCharacterSubstringBruteForce(String input) {
11+
String output = "";
12+
for (int start = 0; start < input.length(); start++) {
13+
Set<Character> visited = new HashSet<>();
14+
int end = start;
15+
for (; end < input.length(); end++) {
16+
char currChar = input.charAt(end);
17+
if (visited.contains(currChar)) {
18+
break;
19+
} else {
20+
visited.add(currChar);
21+
}
22+
}
23+
if (output.length() < end - start + 1) {
24+
output = input.substring(start, end);
25+
}
26+
}
27+
return output;
28+
}
29+
30+
public static String getUniqueCharacterSubstring(String input) {
31+
Map<Character, Integer> visited = new HashMap<>();
32+
String output = "";
33+
for (int start = 0, end = 0; end < input.length(); end++) {
34+
char currChar = input.charAt(end);
35+
if (visited.containsKey(currChar)) {
36+
start = Math.max(visited.get(currChar) + 1, start);
37+
}
38+
if (output.length() < end - start + 1) {
39+
output = input.substring(start, end + 1);
40+
}
41+
visited.put(currChar, end);
42+
}
43+
return output;
44+
}
45+
46+
public static void main(String[] args) {
47+
if(args.length > 0) {
48+
System.out.println(getUniqueCharacterSubstring(args[0]));
49+
} else {
50+
System.err.println("This program expects command-line input. Please try again!");
51+
}
52+
}
53+
54+
}
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
package com.baeldung.algorithms.factorial;
2+
3+
import static org.assertj.core.api.Assertions.assertThat;
4+
5+
import java.math.BigInteger;
6+
7+
import org.junit.Before;
8+
import org.junit.Test;
9+
10+
public class FactorialUnitTest {
11+
12+
Factorial factorial;
13+
14+
@Before
15+
public void setup() {
16+
factorial = new Factorial();
17+
}
18+
19+
@Test
20+
public void whenCalculatingFactorialUsingForLoop_thenCorrect() {
21+
int n = 5;
22+
23+
assertThat(factorial.factorialUsingForLoop(n)).isEqualTo(120);
24+
}
25+
26+
@Test
27+
public void whenCalculatingFactorialUsingStreams_thenCorrect() {
28+
int n = 5;
29+
30+
assertThat(factorial.factorialUsingStreams(n)).isEqualTo(120);
31+
}
32+
33+
@Test
34+
public void whenCalculatingFactorialUsingRecursion_thenCorrect() {
35+
int n = 5;
36+
37+
assertThat(factorial.factorialUsingRecursion(n)).isEqualTo(120);
38+
}
39+
40+
@Test
41+
public void whenCalculatingFactorialUsingMemoize_thenCorrect() {
42+
int n = 5;
43+
44+
assertThat(factorial.factorialUsingMemoize(n)).isEqualTo(120);
45+
46+
n = 6;
47+
48+
assertThat(factorial.factorialUsingMemoize(n)).isEqualTo(720);
49+
}
50+
51+
@Test
52+
public void whenCalculatingFactorialHavingLargeResult_thenCorrect() {
53+
int n = 22;
54+
55+
assertThat(factorial.factorialHavingLargeResult(n)).isEqualTo(new BigInteger("1124000727777607680000"));
56+
}
57+
58+
@Test
59+
public void whenCalculatingFactorialUsingApacheCommons_thenCorrect() {
60+
int n = 5;
61+
62+
assertThat(factorial.factorialUsingApacheCommons(n)).isEqualTo(120);
63+
}
64+
65+
@Test
66+
public void whenCalculatingFactorialUsingGuava_thenCorrect() {
67+
int n = 22;
68+
69+
assertThat(factorial.factorialUsingGuava(n)).isEqualTo(new BigInteger("1124000727777607680000"));
70+
}
71+
72+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.baeldung.algorithms.string;
2+
3+
import org.junit.jupiter.api.Test;
4+
5+
import static org.junit.jupiter.api.Assertions.assertEquals;
6+
import static com.baeldung.algorithms.string.LongestSubstringNonRepeatingCharacters.getUniqueCharacterSubstring;
7+
import static com.baeldung.algorithms.string.LongestSubstringNonRepeatingCharacters.getUniqueCharacterSubstringBruteForce;
8+
9+
public class LongestSubstringNonRepeatingCharactersUnitTest {
10+
11+
@Test
12+
void givenString_whenGetUniqueCharacterSubstringBruteForceCalled_thenResultFoundAsExpectedUnitTest() {
13+
assertEquals("", getUniqueCharacterSubstringBruteForce(""));
14+
assertEquals("A", getUniqueCharacterSubstringBruteForce("A"));
15+
assertEquals("ABCDEF", getUniqueCharacterSubstringBruteForce("AABCDEF"));
16+
assertEquals("ABCDEF", getUniqueCharacterSubstringBruteForce("ABCDEFF"));
17+
assertEquals("NGISAWE", getUniqueCharacterSubstringBruteForce("CODINGISAWESOME"));
18+
assertEquals("be coding", getUniqueCharacterSubstringBruteForce("always be coding"));
19+
}
20+
21+
@Test
22+
void givenString_whenGetUniqueCharacterSubstringCalled_thenResultFoundAsExpectedUnitTest() {
23+
assertEquals("", getUniqueCharacterSubstring(""));
24+
assertEquals("A", getUniqueCharacterSubstring("A"));
25+
assertEquals("ABCDEF", getUniqueCharacterSubstring("AABCDEF"));
26+
assertEquals("ABCDEF", getUniqueCharacterSubstring("ABCDEFF"));
27+
assertEquals("NGISAWE", getUniqueCharacterSubstring("CODINGISAWESOME"));
28+
assertEquals("be coding", getUniqueCharacterSubstring("always be coding"));
29+
}
30+
31+
}

algorithms-miscellaneous-2/pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,11 @@
3333
<artifactId>jgrapht-core</artifactId>
3434
<version>${org.jgrapht.core.version}</version>
3535
</dependency>
36+
<dependency>
37+
<groupId>org.jgrapht</groupId>
38+
<artifactId>jgrapht-ext</artifactId>
39+
<version>${org.jgrapht.ext.version}</version>
40+
</dependency>
3641
<dependency>
3742
<groupId>pl.allegro.finance</groupId>
3843
<artifactId>tradukisto</artifactId>
@@ -83,6 +88,7 @@
8388
<commons-math3.version>3.6.1</commons-math3.version>
8489
<tradukisto.version>1.0.1</tradukisto.version>
8590
<org.jgrapht.core.version>1.0.1</org.jgrapht.core.version>
91+
<org.jgrapht.ext.version>1.0.1</org.jgrapht.ext.version>
8692
<org.assertj.core.version>3.9.0</org.assertj.core.version>
8793
<commons-codec.version>1.11</commons-codec.version>
8894
</properties>
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package com.baeldung.jgrapht;
2+
3+
import static org.junit.Assert.assertTrue;
4+
import java.awt.Color;
5+
import java.awt.image.BufferedImage;
6+
import java.io.File;
7+
import java.io.IOException;
8+
import javax.imageio.ImageIO;
9+
import org.jgrapht.ext.JGraphXAdapter;
10+
import org.jgrapht.graph.DefaultDirectedGraph;
11+
import org.jgrapht.graph.DefaultEdge;
12+
import org.junit.Before;
13+
import org.junit.Test;
14+
import com.mxgraph.layout.mxCircleLayout;
15+
import com.mxgraph.layout.mxIGraphLayout;
16+
import com.mxgraph.util.mxCellRenderer;
17+
18+
public class GraphImageGenerationUnitTest {
19+
static DefaultDirectedGraph<String, DefaultEdge> g;
20+
21+
@Before
22+
public void createGraph() throws IOException {
23+
File imgFile = new File("src/test/resources/graph.png");
24+
imgFile.createNewFile();
25+
g = new DefaultDirectedGraph<String, DefaultEdge>(DefaultEdge.class);
26+
String x1 = "x1";
27+
String x2 = "x2";
28+
String x3 = "x3";
29+
g.addVertex(x1);
30+
g.addVertex(x2);
31+
g.addVertex(x3);
32+
g.addEdge(x1, x2);
33+
g.addEdge(x2, x3);
34+
g.addEdge(x3, x1);
35+
}
36+
37+
@Test
38+
public void givenAdaptedGraph_whenWriteBufferedImage_ThenFileShouldExist() throws IOException {
39+
JGraphXAdapter<String, DefaultEdge> graphAdapter = new JGraphXAdapter<String, DefaultEdge>(g);
40+
mxIGraphLayout layout = new mxCircleLayout(graphAdapter);
41+
layout.execute(graphAdapter.getDefaultParent());
42+
File imgFile = new File("src/test/resources/graph.png");
43+
BufferedImage image = mxCellRenderer.createBufferedImage(graphAdapter, null, 2, Color.WHITE, true, null);
44+
ImageIO.write(image, "PNG", imgFile);
45+
assertTrue(imgFile.exists());
46+
}
47+
}
Loading

algorithms-sorting/src/main/java/com/baeldung/algorithms/mergesort/MergeSort.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public static void merge(int[] a, int[] l, int[] r, int left, int right) {
3434

3535
while (i < left && j < right) {
3636

37-
if (l[i] < r[j])
37+
if (l[i] <= r[j])
3838
a[k++] = l[i++];
3939
else
4040
a[k++] = r[j++];

core-java-arrays/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@
1212
- [Arrays in Java: A Reference Guide](https://www.baeldung.com/java-arrays-guide)
1313
- [How to Invert an Array in Java](http://www.baeldung.com/java-invert-array)
1414
- [Array Operations in Java](http://www.baeldung.com/java-common-array-operations)
15-
15+
- [Intersection Between two Integer Arrays](https://www.baeldung.com/java-array-intersection)

core-java-collections/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,3 +51,4 @@
5151
- [Java List Initialization in One Line](https://www.baeldung.com/java-init-list-one-line)
5252
- [ClassCastException: Arrays$ArrayList cannot be cast to ArrayList](https://www.baeldung.com/java-classcastexception-arrays-arraylist)
5353
- [A Guide to EnumMap](https://www.baeldung.com/java-enum-map)
54+
- [Ways to Iterate Over a List in Java](https://www.baeldung.com/java-iterate-list)

core-java-concurrency/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,4 @@
3131
- [Runnable vs. Callable in Java](http://www.baeldung.com/java-runnable-callable)
3232
- [Brief Introduction to Java Thread.yield()](https://www.baeldung.com/java-thread-yield)
3333
- [Print Even and Odd Numbers Using 2 Threads](https://www.baeldung.com/java-even-odd-numbers-with-2-threads)
34+
- [Java CyclicBarrier vs CountDownLatch](https://www.baeldung.com/java-cyclicbarrier-countdownlatch)

0 commit comments

Comments
 (0)