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.