Skip to content

Commit 61eb86f

Browse files
Merge pull request #1 from eugenp/master
merge
2 parents 2929b32 + 53f02c4 commit 61eb86f

61 files changed

Lines changed: 2563 additions & 7 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.baeldung.algorithms.linkedlist;
2+
3+
public class LinkedListReversal {
4+
5+
ListNode reverseList(ListNode head) {
6+
ListNode previous = null;
7+
ListNode current = head;
8+
while (current != null) {
9+
ListNode nextElement = current.getNext();
10+
current.setNext(previous);
11+
previous = current;
12+
current = nextElement;
13+
}
14+
return previous;
15+
}
16+
17+
ListNode reverseListRecursive(ListNode head) {
18+
if (head == null) {
19+
return null;
20+
}
21+
if (head.getNext() == null) {
22+
return head;
23+
}
24+
ListNode node = reverseListRecursive(head.getNext());
25+
head.getNext().setNext(head);
26+
head.setNext(null);
27+
return node;
28+
}
29+
30+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.baeldung.algorithms.linkedlist;
2+
3+
public class ListNode {
4+
5+
private int data;
6+
private ListNode next;
7+
8+
ListNode(int data) {
9+
this.data = data;
10+
this.next = null;
11+
}
12+
13+
public int getData() {
14+
return data;
15+
}
16+
17+
public ListNode getNext() {
18+
return next;
19+
}
20+
21+
public void setData(int data) {
22+
this.data = data;
23+
}
24+
25+
public void setNext(ListNode next) {
26+
this.next = next;
27+
}
28+
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package com.baeldung.algorithms.linkedlist;
2+
3+
import org.junit.Test;
4+
5+
import static org.junit.Assert.assertEquals;
6+
import static org.junit.Assert.assertNotNull;
7+
8+
public class LinkedListReversalUnitTest {
9+
@Test
10+
public void givenLinkedList_whenIterativeReverse_thenOutputCorrectResult() {
11+
ListNode head = constructLinkedList();
12+
ListNode node = head;
13+
for (int i = 1; i <= 5; i++) {
14+
assertNotNull(node);
15+
assertEquals(i, node.getData());
16+
node = node.getNext();
17+
}
18+
LinkedListReversal reversal = new LinkedListReversal();
19+
node = reversal.reverseList(head);
20+
for (int i = 5; i >= 1; i--) {
21+
assertNotNull(node);
22+
assertEquals(i, node.getData());
23+
node = node.getNext();
24+
}
25+
}
26+
27+
@Test
28+
public void givenLinkedList_whenRecursiveReverse_thenOutputCorrectResult() {
29+
ListNode head = constructLinkedList();
30+
ListNode node = head;
31+
for (int i = 1; i <= 5; i++) {
32+
assertNotNull(node);
33+
assertEquals(i, node.getData());
34+
node = node.getNext();
35+
}
36+
LinkedListReversal reversal = new LinkedListReversal();
37+
node = reversal.reverseListRecursive(head);
38+
for (int i = 5; i >= 1; i--) {
39+
assertNotNull(node);
40+
assertEquals(i, node.getData());
41+
node = node.getNext();
42+
}
43+
}
44+
45+
private ListNode constructLinkedList() {
46+
ListNode head = null;
47+
ListNode tail = null;
48+
for (int i = 1; i <= 5; i++) {
49+
ListNode node = new ListNode(i);
50+
if (head == null) {
51+
head = node;
52+
} else {
53+
tail.setNext(node);
54+
}
55+
tail = node;
56+
}
57+
return head;
58+
}
59+
}

core-groovy-strings/README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
### Relevant Articles:
2+
3+
- [How to Remove a Prefix From Strings in Groovy](https://www.baeldung.com/groovy-remove-string-prefix)
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package com.baeldung.lastmodifiedfile;
2+
3+
import java.io.File;
4+
import java.io.FileFilter;
5+
import java.io.IOException;
6+
import java.nio.file.Files;
7+
import java.nio.file.Path;
8+
import java.nio.file.Paths;
9+
import java.util.Arrays;
10+
import java.util.Optional;
11+
12+
import org.apache.commons.io.comparator.LastModifiedFileComparator;
13+
import org.apache.commons.io.filefilter.FileFilterUtils;
14+
15+
public class LastModifiedFileApp {
16+
17+
public static File findUsingIOApi(String sdir) {
18+
File dir = new File(sdir);
19+
if (dir.isDirectory()) {
20+
Optional<File> opFile = Arrays.stream(dir.listFiles(File::isFile))
21+
.max((f1, f2) -> Long.compare(f1.lastModified(), f2.lastModified()));
22+
23+
if (opFile.isPresent()) {
24+
return opFile.get();
25+
}
26+
}
27+
28+
return null;
29+
}
30+
31+
public static Path findUsingNIOApi(String sdir) throws IOException {
32+
Path dir = Paths.get(sdir);
33+
if (Files.isDirectory(dir)) {
34+
Optional<Path> opPath = Files.list(dir)
35+
.filter(p -> !Files.isDirectory(p))
36+
.sorted((p1, p2) -> Long.valueOf(p2.toFile().lastModified())
37+
.compareTo(p1.toFile().lastModified()))
38+
.findFirst();
39+
40+
if (opPath.isPresent()) {
41+
return opPath.get();
42+
}
43+
}
44+
45+
return null;
46+
}
47+
48+
public static File findUsingCommonsIO(String sdir) {
49+
File dir = new File(sdir);
50+
if (dir.isDirectory()) {
51+
File[] dirFiles = dir.listFiles((FileFilter) FileFilterUtils.fileFileFilter());
52+
if (dirFiles != null && dirFiles.length > 0) {
53+
Arrays.sort(dirFiles, LastModifiedFileComparator.LASTMODIFIED_REVERSE);
54+
return dirFiles[0];
55+
}
56+
}
57+
58+
return null;
59+
}
60+
61+
}
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
package com.baeldung.lastmodifiedfile;
2+
3+
import static org.assertj.core.api.Assertions.assertThat;
4+
5+
import java.io.File;
6+
import java.io.IOException;
7+
import java.nio.file.Files;
8+
import java.nio.file.Path;
9+
import java.nio.file.Paths;
10+
11+
import org.apache.commons.io.FileUtils;
12+
import org.junit.jupiter.api.AfterAll;
13+
import org.junit.jupiter.api.BeforeAll;
14+
import org.junit.jupiter.api.Test;
15+
16+
public class LastModifiedFileAppUnitTest {
17+
18+
private final static String SOURCEDIRECTORY = "src/test/resources/lastmodfiles";
19+
20+
@BeforeAll
21+
public static void setUpFiles() throws IOException, InterruptedException {
22+
File srcDir = new File(SOURCEDIRECTORY);
23+
if (!srcDir.exists()) {
24+
srcDir.mkdir();
25+
}
26+
27+
FileUtils.cleanDirectory(srcDir);
28+
29+
File file01 = new File(SOURCEDIRECTORY + "/file01.txt");
30+
file01.createNewFile();
31+
32+
Thread.sleep(2000);
33+
34+
File file02 = new File(SOURCEDIRECTORY + "/file02.txt");
35+
file02.createNewFile();
36+
37+
Thread.sleep(2000);
38+
39+
File file03 = new File(SOURCEDIRECTORY + "/file03.txt");
40+
file03.createNewFile();
41+
42+
Thread.sleep(2000);
43+
44+
Files.write(Paths.get(SOURCEDIRECTORY + "/file02.txt"), "Hello File02".getBytes());
45+
46+
}
47+
48+
@Test
49+
public void givenDirectory_whenUsingIoApi_thenFindLastModfile() throws IOException {
50+
File lastModFile = LastModifiedFileApp.findUsingIOApi(SOURCEDIRECTORY);
51+
52+
assertThat(lastModFile).isNotNull();
53+
assertThat(lastModFile.getName()).isEqualTo("file02.txt");
54+
}
55+
56+
@Test
57+
public void givenDirectory_whenUsingNioApi_thenFindLastModfile() throws IOException {
58+
Path lastModPath = LastModifiedFileApp.findUsingNIOApi(SOURCEDIRECTORY);
59+
60+
assertThat(lastModPath).isNotNull();
61+
assertThat(lastModPath.toFile().getName()).isEqualTo("file02.txt");
62+
}
63+
64+
@Test
65+
public void givenDirectory_whenUsingApacheCommons_thenFindLastModfile() throws IOException {
66+
File lastModFile = LastModifiedFileApp.findUsingCommonsIO(SOURCEDIRECTORY);
67+
68+
assertThat(lastModFile).isNotNull();
69+
assertThat(lastModFile.getName()).isEqualTo("file02.txt");
70+
}
71+
72+
@AfterAll
73+
public static void cleanUp() throws IOException {
74+
File srcDir = new File(SOURCEDIRECTORY);
75+
FileUtils.deleteDirectory(srcDir);
76+
}
77+
78+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.baeldung.getclassobject;
2+
3+
public class Animal {
4+
protected int numberOfEyes;
5+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package com.baeldung.getclassobject;
2+
3+
public class Monkey extends Animal {
4+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package com.baeldung.getclassobject;
2+
3+
public abstract class SomeAbstractClass {
4+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package com.baeldung.getclassobject;
2+
3+
interface SomeInterface {
4+
}

0 commit comments

Comments
 (0)