-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMain.java
More file actions
61 lines (46 loc) · 1.76 KB
/
Main.java
File metadata and controls
61 lines (46 loc) · 1.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package com.dj;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Random;
import java.util.function.UnaryOperator;
public class Main {
private static Random random = new Random();
private record Person(String first) {
public String last(String s) {
return first + " " + s.substring(0, s.indexOf(" "));
}
}
public static void main(String[] args) {
Person tim = new Person("Tim");
String[] names = {"Anna", "Bob", "Cameron", "Donald", "Eva", "Francis"};
List<UnaryOperator<String>> list = new ArrayList<>(List.of(
String::toUpperCase,
s -> s + " " + getRandomChar('D', 'M') + ".",
s -> s + " " + reverse(s, 0, s.indexOf(" ")),
Main::reverse,
String::new,
// s -> new String("Howdy" + s),
String::valueOf,
tim::last,
(new Person("Mary"))::last
));
applyChanges(names, list);
}
private static void applyChanges(String[] names, List<UnaryOperator<String>> stringFunctions) {
List<String> backedBYArray = Arrays.asList(names);
for (var function : stringFunctions) {
backedBYArray.replaceAll(s -> s.transform(function));
System.out.println(Arrays.toString(names));
}
}
private static char getRandomChar(char startChar, char endChar) {
return (char) random.nextInt((int) startChar, (int) endChar + 1);
}
private static String reverse(String s) {
return reverse(s, 0, s.length());
}
private static String reverse(String s, int start, int end) {
return new StringBuilder(s.substring(start, end)).reverse().toString();
}
}