dev-diary
Jan 24, 2025
Sort a Map by value:
Map<String, Person> personMap;
@Before
public void setUp() {
personMap = new HashMap<>();
personMap.put("John", new Person("John", 50));
personMap.put("Jane", new Person("Jane", 10));
personMap.put("Jack", new Person("Jack", 55));
}
@Test
public void sortByAgeAscendingOrderTest() {
var sorted = personMap.entrySet().stream()
.sorted(( p1, p2) -> Integer.compare(p1.getValue().getAge(), p2.getValue().getAge()))
.toList();
assertEquals(10, sorted.getFirst().getValue().getAge());
}
@Test
public void sortByAgeDescendingOrderTest() {
var sorted = personMap.entrySet().stream()
.sorted(( p1, p2) -> Integer.compare(p2.getValue().getAge(), p1.getValue().getAge()))
.toList();
assertEquals(55, sorted.getFirst().getValue().getAge());
}
Jan 23, 2025
Reverse String:
@Test
public void testReverseString() {
assertEquals("esreveR", reverse());
}
private String reverse() {
char[] reverseArray = "Reverse".toCharArray();
StringBuilder builder = new StringBuilder();
for (int counter = reverseArray.length - 1; counter >= 0; counter--) {
builder.append(reverseArray[counter]);
}
return builder.toString();
}
Sort String:
@Test
public void testSortString() {
String sorted = sortString();
assertEquals("Reeersv", sorted);
}
private String sortString() {
char[] input = "Reverse".toCharArray();
boolean swapped;
for (int counter = 0; counter < input.length; counter++) {
swapped = false;
for (int inner = 0; inner < input.length - 1; inner++) {
if (input[inner] > input[inner + 1]) {
char temp = input[inner];
input[inner] = input[inner + 1];
input[inner + 1] = temp;
swapped = true;
}
}
if (!swapped) {
break;
}
}
return new String(input);
}
Sep 6th, 2023
Decimal format:
public class MoneyPoundsFormat {
private final double calcCharge;
private final DecimalFormat decimalFormat;
public MoneyPoundsFormat(final double calcCharge, final String format) {
this.calcCharge = calcCharge;
this.decimalFormat = new DecimalFormat(format);
}
public String display() {
return this.decimalFormat.format(this.calcCharge);
}
}
Test:
public class TestMoneyPoundsFormat {
MoneyPoundsFormat moneyPoundsFormat;
@Before
public void init() {
moneyPoundsFormat = new MoneyPoundsFormat(10.00, "£0.00");
}
@Test
public void testPoundsMoneyFormat() {
assertEquals("£10.00", moneyPoundsFormat.display());
}
}
BaseEmployer:
public class BaseEmployee {
private final String name;
public BaseEmployee(String name) {
this.name = name;
}
}
public class LevelOneEmployee extends BaseEmployee {
private final String levelOneName;
public LevelOneEmployee(String levelOneName, String name) {
super(name);
this.levelOneName = levelOneName;
}
}
public class LevelTwoEmployee extends LevelOneEmployee {
private final String levelTwoName;
public LevelTwoEmployee(String levelTwoName, String levelOneName, String name) {
super(levelOneName, name);
this.levelTwoName = levelTwoName;
}
}
Test:
public class EmployeeTest {
@Test
public void testEmployeeLevels() {
List<BaseEmployee> employees = new ArrayList<>();
BaseEmployee baseEmployee = new BaseEmployee("miles");
LevelOneEmployee levelOneEmployee = new LevelOneEmployee("level1", "bob");
LevelTwoEmployee levelTwoEmployee = new LevelTwoEmployee("level2", "level1", "bob");
employees.add(baseEmployee);
employees.add(levelOneEmployee);
employees.add(levelTwoEmployee);
assertEquals(BaseEmployee.class, employees.get(0).getClass());
assertEquals(LevelOneEmployee.class, employees.get(1).getClass());
assertEquals(LevelTwoEmployee.class, employees.get(2).getClass());
}
}
May 4th, 2022:
Java 17 switch object:
public String checkObject(Object obj) {
return switch (obj) {
case String h -> "String";
default -> "It is an object";
};
}
May 1st, 2022:
Gallery github repo is using r2dbc.