@@ -1,3 +1,4 @@
|
||||
**UPDATE**: The price of "Learn Spring Security OAuth" will permanently change on the 11th of December, along with the upcoming OAuth2 material: http://bit.ly/github-lss
|
||||
|
||||
The Courses
|
||||
==============================
|
||||
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
package com.baeldung.algorithms.mergesortedarrays;
|
||||
|
||||
public class SortedArrays {
|
||||
|
||||
public static int[] merge(int[] foo, int[] bar) {
|
||||
|
||||
int fooLength = foo.length;
|
||||
int barLength = bar.length;
|
||||
|
||||
int[] merged = new int[fooLength + barLength];
|
||||
|
||||
int fooPosition, barPosition, mergedPosition;
|
||||
fooPosition = barPosition = mergedPosition = 0;
|
||||
|
||||
while (fooPosition < fooLength && barPosition < barLength) {
|
||||
if (foo[fooPosition] < bar[barPosition]) {
|
||||
merged[mergedPosition++] = foo[fooPosition++];
|
||||
} else {
|
||||
merged[mergedPosition++] = bar[barPosition++];
|
||||
}
|
||||
}
|
||||
|
||||
while (fooPosition < fooLength) {
|
||||
merged[mergedPosition++] = foo[fooPosition++];
|
||||
}
|
||||
|
||||
while (barPosition < barLength) {
|
||||
merged[mergedPosition++] = bar[barPosition++];
|
||||
}
|
||||
|
||||
return merged;
|
||||
}
|
||||
}
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
package com.baeldung.algorithms.mergesortedarrays;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import com.baeldung.algorithms.mergesortedarrays.SortedArrays;
|
||||
|
||||
public class SortedArraysUnitTest {
|
||||
|
||||
@Test
|
||||
public void givenTwoSortedArrays_whenMerged_thenReturnMergedSortedArray() {
|
||||
|
||||
int[] foo = { 3, 7 };
|
||||
int[] bar = { 4, 8, 11 };
|
||||
int[] merged = { 3, 4, 7, 8, 11 };
|
||||
|
||||
assertArrayEquals(merged, SortedArrays.merge(foo, bar));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenTwoSortedArraysWithDuplicates_whenMerged_thenReturnMergedSortedArray() {
|
||||
|
||||
int[] foo = { 3, 3, 7 };
|
||||
int[] bar = { 4, 8, 8, 11 };
|
||||
int[] merged = { 3, 3, 4, 7, 8, 8, 11 };
|
||||
|
||||
assertArrayEquals(merged, SortedArrays.merge(foo, bar));
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
## AWS
|
||||
|
||||
This module contains articles about AWS
|
||||
This module contains articles about Amazon Web Services (AWS)
|
||||
|
||||
### Relevant articles
|
||||
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
=========
|
||||
|
||||
## Core Java Concurrency Advanced Examples
|
||||
|
||||
This module contains articles about advanced topics about multithreading with core Java.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
=========
|
||||
## Core Java Concurrency Basic
|
||||
|
||||
## Core Java Concurrency Basic 2 Examples
|
||||
This module contains articles about basic Java concurrency
|
||||
|
||||
### Relevant Articles:
|
||||
- [How to Delay Code Execution in Java](https://www.baeldung.com/java-delay-code-execution)
|
||||
@@ -8,3 +8,4 @@
|
||||
- [Difference Between Wait and Sleep in Java](https://www.baeldung.com/java-wait-and-sleep)
|
||||
- [Guide to the Synchronized Keyword in Java](https://www.baeldung.com/java-synchronized)
|
||||
- [Life Cycle of a Thread in Java](https://www.baeldung.com/java-thread-lifecycle)
|
||||
- [[<-- Prev]](/core-java-modules/core-java-concurrency-basic)
|
||||
@@ -17,3 +17,4 @@ This module contains articles about core java exceptions
|
||||
- [Common Java Exceptions](https://www.baeldung.com/java-common-exceptions)
|
||||
- [How to Find an Exception’s Root Cause in Java](https://www.baeldung.com/java-exception-root-cause)
|
||||
- [Is It a Bad Practice to Catch Throwable?](https://www.baeldung.com/java-catch-throwable-bad-practice)
|
||||
- [[Next -->]](/core-java-modules/core-java-exceptions-2)
|
||||
+8
-2
@@ -156,10 +156,16 @@ public class FileClassUnitTest {
|
||||
|
||||
private static File makeDir(String name) {
|
||||
File directory = new File(name);
|
||||
directory.mkdir();
|
||||
if (directory.isDirectory()) {
|
||||
|
||||
// If the directory already exists, make sure we create it 'from scratch', i.e. all the files inside are deleted first
|
||||
if (directory.exists()) {
|
||||
removeDir(directory);
|
||||
}
|
||||
|
||||
if (directory.mkdir()) {
|
||||
return directory;
|
||||
}
|
||||
|
||||
throw new RuntimeException("'" + name + "' not made!");
|
||||
}
|
||||
|
||||
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
package com.baeldung.overflow;
|
||||
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
public class OverflowUnitTest {
|
||||
|
||||
@Test
|
||||
public void positive_and_negative_zero_are_not_always_equal() {
|
||||
|
||||
double a = +0f;
|
||||
double b = -0f;
|
||||
|
||||
assertTrue(a == b);
|
||||
|
||||
assertTrue(1/a == Double.POSITIVE_INFINITY);
|
||||
assertTrue(1/b == Double.NEGATIVE_INFINITY);
|
||||
|
||||
assertTrue(1/a != 1/b);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package com.baeldung.printbinarytree;
|
||||
|
||||
public class BinaryTreeModel {
|
||||
|
||||
private Object value;
|
||||
private BinaryTreeModel left;
|
||||
private BinaryTreeModel right;
|
||||
|
||||
public BinaryTreeModel(Object value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public Object getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public void setValue(Object value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public BinaryTreeModel getLeft() {
|
||||
return left;
|
||||
}
|
||||
|
||||
public void setLeft(BinaryTreeModel left) {
|
||||
this.left = left;
|
||||
}
|
||||
|
||||
public BinaryTreeModel getRight() {
|
||||
return right;
|
||||
}
|
||||
|
||||
public void setRight(BinaryTreeModel right) {
|
||||
this.right = right;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
package com.baeldung.printbinarytree;
|
||||
|
||||
import java.io.PrintStream;
|
||||
|
||||
public class BinaryTreePrinter {
|
||||
|
||||
private BinaryTreeModel tree;
|
||||
|
||||
public BinaryTreePrinter(BinaryTreeModel tree) {
|
||||
this.tree = tree;
|
||||
}
|
||||
|
||||
private String traversePreOrder(BinaryTreeModel root) {
|
||||
|
||||
if (root == null) {
|
||||
return "";
|
||||
}
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append(root.getValue());
|
||||
|
||||
String pointerRight = "└──";
|
||||
String pointerLeft = (root.getRight() != null) ? "├──" : "└──";
|
||||
|
||||
traverseNodes(sb, "", pointerLeft, root.getLeft(), root.getRight() != null);
|
||||
traverseNodes(sb, "", pointerRight, root.getRight(), false);
|
||||
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
private void traverseNodes(StringBuilder sb, String padding, String pointer, BinaryTreeModel node,
|
||||
boolean hasRightSibling) {
|
||||
|
||||
if (node != null) {
|
||||
|
||||
sb.append("\n");
|
||||
sb.append(padding);
|
||||
sb.append(pointer);
|
||||
sb.append(node.getValue());
|
||||
|
||||
StringBuilder paddingBuilder = new StringBuilder(padding);
|
||||
if (hasRightSibling) {
|
||||
paddingBuilder.append("│ ");
|
||||
} else {
|
||||
paddingBuilder.append(" ");
|
||||
}
|
||||
|
||||
String paddingForBoth = paddingBuilder.toString();
|
||||
String pointerRight = "└──";
|
||||
String pointerLeft = (node.getRight() != null) ? "├──" : "└──";
|
||||
|
||||
traverseNodes(sb, paddingForBoth, pointerLeft, node.getLeft(), node.getRight() != null);
|
||||
traverseNodes(sb, paddingForBoth, pointerRight, node.getRight(), false);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void print(PrintStream os) {
|
||||
os.print(traversePreOrder(tree));
|
||||
}
|
||||
|
||||
}
|
||||
+178
@@ -0,0 +1,178 @@
|
||||
package com.baeldung.printbinarytree;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.io.PrintStream;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.baeldung.printbinarytree.BinaryTreeModel;
|
||||
import com.baeldung.printbinarytree.BinaryTreePrinter;
|
||||
|
||||
public class PrintingBinaryTreeModelUnitTest {
|
||||
|
||||
private BinaryTreeModel balanced;
|
||||
private BinaryTreeModel leftSkewed;
|
||||
private BinaryTreeModel rightSkewed;
|
||||
|
||||
private OutputStream output;
|
||||
|
||||
@Before
|
||||
public void setup() {
|
||||
balanced = createBalancedTree();
|
||||
leftSkewed = createLeftUnbalancedTree();
|
||||
rightSkewed = createRightUnbalancedTree();
|
||||
|
||||
output = new ByteArrayOutputStream();
|
||||
System.setOut(new PrintStream(output));
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() {
|
||||
System.setOut(System.out);
|
||||
}
|
||||
|
||||
private BinaryTreeModel createBalancedTree() {
|
||||
|
||||
BinaryTreeModel root = new BinaryTreeModel("root");
|
||||
|
||||
BinaryTreeModel node1 = new BinaryTreeModel("node1");
|
||||
BinaryTreeModel node2 = new BinaryTreeModel("node2");
|
||||
root.setLeft(node1);
|
||||
root.setRight(node2);
|
||||
|
||||
BinaryTreeModel node3 = new BinaryTreeModel("node3");
|
||||
BinaryTreeModel node4 = new BinaryTreeModel("node4");
|
||||
node1.setLeft(node3);
|
||||
node1.setRight(node4);
|
||||
|
||||
node2.setLeft(new BinaryTreeModel("node5"));
|
||||
node2.setRight(new BinaryTreeModel("node6"));
|
||||
|
||||
BinaryTreeModel node7 = new BinaryTreeModel("node7");
|
||||
node3.setLeft(node7);
|
||||
node7.setLeft(new BinaryTreeModel("node8"));
|
||||
node7.setRight(new BinaryTreeModel("node9"));
|
||||
|
||||
return root;
|
||||
}
|
||||
|
||||
private BinaryTreeModel createLeftUnbalancedTree() {
|
||||
|
||||
BinaryTreeModel root = new BinaryTreeModel("root");
|
||||
|
||||
BinaryTreeModel node1 = new BinaryTreeModel("node1");
|
||||
root.setLeft(node1);
|
||||
root.setRight(new BinaryTreeModel("node2"));
|
||||
|
||||
BinaryTreeModel node3 = new BinaryTreeModel("node3");
|
||||
node1.setLeft(node3);
|
||||
|
||||
BinaryTreeModel node4 = new BinaryTreeModel("node4");
|
||||
node3.setLeft(node4);
|
||||
|
||||
BinaryTreeModel node5 = new BinaryTreeModel("node5");
|
||||
node4.setLeft(node5);
|
||||
|
||||
BinaryTreeModel node6 = new BinaryTreeModel("node6");
|
||||
node5.setLeft(node6);
|
||||
|
||||
BinaryTreeModel node7 = new BinaryTreeModel("node7");
|
||||
node6.setLeft(node7);
|
||||
|
||||
node7.setLeft(new BinaryTreeModel("node8"));
|
||||
|
||||
return root;
|
||||
}
|
||||
|
||||
private BinaryTreeModel createRightUnbalancedTree() {
|
||||
|
||||
BinaryTreeModel root = new BinaryTreeModel("root");
|
||||
|
||||
BinaryTreeModel node2 = new BinaryTreeModel("node2");
|
||||
root.setLeft(new BinaryTreeModel("node1"));
|
||||
root.setRight(node2);
|
||||
|
||||
BinaryTreeModel node3 = new BinaryTreeModel("node3");
|
||||
node2.setRight(node3);
|
||||
|
||||
BinaryTreeModel node4 = new BinaryTreeModel("node4");
|
||||
node3.setRight(node4);
|
||||
|
||||
BinaryTreeModel node5 = new BinaryTreeModel("node5");
|
||||
node4.setRight(node5);
|
||||
|
||||
BinaryTreeModel node6 = new BinaryTreeModel("node6");
|
||||
node5.setRight(node6);
|
||||
|
||||
BinaryTreeModel node7 = new BinaryTreeModel("node7");
|
||||
node6.setRight(node7);
|
||||
|
||||
node7.setRight(new BinaryTreeModel("node8"));
|
||||
|
||||
return root;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenBinaryTreeModelBalanced_whenPrintWithBinaryTreePrinter_thenProduceCorrectOutput() {
|
||||
|
||||
StringBuilder expected = new StringBuilder();
|
||||
expected.append("root").append("\n");
|
||||
expected.append("├──node1").append("\n");
|
||||
expected.append("│ ├──node3").append("\n");
|
||||
expected.append("│ │ └──node7").append("\n");
|
||||
expected.append("│ │ ├──node8").append("\n");
|
||||
expected.append("│ │ └──node9").append("\n");
|
||||
expected.append("│ └──node4").append("\n");
|
||||
expected.append("└──node2").append("\n");
|
||||
expected.append(" ├──node5").append("\n");
|
||||
expected.append(" └──node6");
|
||||
|
||||
new BinaryTreePrinter(balanced).print(System.out);
|
||||
|
||||
assertEquals(expected.toString(), output.toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenBinaryTreeModelLeftUnbalanced_whenPrintWithBinaryTreePrinter_thenProduceCorrectOutput() {
|
||||
|
||||
StringBuilder expected = new StringBuilder();
|
||||
expected.append("root").append("\n");
|
||||
expected.append("├──node1").append("\n");
|
||||
expected.append("│ └──node3").append("\n");
|
||||
expected.append("│ └──node4").append("\n");
|
||||
expected.append("│ └──node5").append("\n");
|
||||
expected.append("│ └──node6").append("\n");
|
||||
expected.append("│ └──node7").append("\n");
|
||||
expected.append("│ └──node8").append("\n");
|
||||
expected.append("└──node2");
|
||||
|
||||
new BinaryTreePrinter(leftSkewed).print(System.out);
|
||||
|
||||
assertEquals(expected.toString(), output.toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenBinaryTreeModelRightUnbalanced_whenPrintWithBinaryTreePrinter_thenProduceCorrectOutput() {
|
||||
|
||||
StringBuilder expected = new StringBuilder();
|
||||
expected.append("root").append("\n");
|
||||
expected.append("├──node1").append("\n");
|
||||
expected.append("└──node2").append("\n");
|
||||
expected.append(" └──node3").append("\n");
|
||||
expected.append(" └──node4").append("\n");
|
||||
expected.append(" └──node5").append("\n");
|
||||
expected.append(" └──node6").append("\n");
|
||||
expected.append(" └──node7").append("\n");
|
||||
expected.append(" └──node8");
|
||||
|
||||
new BinaryTreePrinter(rightSkewed).print(System.out);
|
||||
|
||||
assertEquals(expected.toString(), output.toString());
|
||||
}
|
||||
|
||||
}
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package org.baeldung.gson.entities;
|
||||
package com.baeldung.gson.entities;
|
||||
|
||||
import java.text.DateFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package org.baeldung.gson.entities;
|
||||
package com.baeldung.gson.entities;
|
||||
|
||||
public abstract class Animal {
|
||||
public String type = "Animal";
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package org.baeldung.gson.entities;
|
||||
package com.baeldung.gson.entities;
|
||||
|
||||
public class Cow extends Animal {
|
||||
private String breed;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package org.baeldung.gson.entities;
|
||||
package com.baeldung.gson.entities;
|
||||
|
||||
public class Dog extends Animal {
|
||||
private String petName;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package org.baeldung.gson.entities;
|
||||
package com.baeldung.gson.entities;
|
||||
|
||||
public class Employee {
|
||||
private int id;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package org.baeldung.gson.entities;
|
||||
package com.baeldung.gson.entities;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package org.baeldung.gson.entities;
|
||||
package com.baeldung.gson.entities;
|
||||
|
||||
import com.google.gson.annotations.Expose;
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package org.baeldung.gson.entities;
|
||||
package com.baeldung.gson.entities;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
+19
-19
@@ -1,19 +1,19 @@
|
||||
package org.baeldung.gson.entities;
|
||||
|
||||
public class User {
|
||||
|
||||
private int id;
|
||||
private String name;
|
||||
private transient String nationality;
|
||||
|
||||
public User(int id, String name, String nationality) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.nationality = nationality;
|
||||
}
|
||||
|
||||
public User(int id, String name) {
|
||||
this(id, name, null);
|
||||
}
|
||||
|
||||
}
|
||||
package com.baeldung.gson.entities;
|
||||
|
||||
public class User {
|
||||
|
||||
private int id;
|
||||
private String name;
|
||||
private transient String nationality;
|
||||
|
||||
public User(int id, String name, String nationality) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.nationality = nationality;
|
||||
}
|
||||
|
||||
public User(int id, String name) {
|
||||
this(id, name, null);
|
||||
}
|
||||
|
||||
}
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package org.baeldung.gson.entities;
|
||||
package com.baeldung.gson.entities;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package org.baeldung.gson.primitives.models;
|
||||
package com.baeldung.gson.primitives.models;
|
||||
|
||||
public class BooleanExample {
|
||||
public boolean value;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package org.baeldung.gson.primitives.models;
|
||||
package com.baeldung.gson.primitives.models;
|
||||
|
||||
public class ByteExample {
|
||||
public byte value = (byte) 1;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package org.baeldung.gson.primitives.models;
|
||||
package com.baeldung.gson.primitives.models;
|
||||
|
||||
public class CharExample {
|
||||
public char value;
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user