В Java 8:
Comparator> valueComparator =
(e1, e2) -> e1.getValue().getField().compareTo(e2.getValue().getField());
Map sortedMap =
unsortedMap.entrySet().stream().
sorted(valueComparator).
collect(Collectors.toMap(Entry::getKey, Entry::getValue,
(e1, e2) -> e1, LinkedHashMap::new));
Использование Guava :
Map map = ...;
Function- getField = new Function
- () {
public Integer apply(Item item) {
return item.getField(); // the field to sort on
}
};
comparatorFunction = Functions.compose(getField, Functions.forMap(map));
comparator = Ordering.natural().onResultOf(comparatorFunction);
Map
sortedMap = ImmutableSortedMap.copyOf(map, comparator);
Хорошо, если вы считаете время выполнения и хотите легко управлять днями посещения, как только у вас будет более 7 дней. Затем, как и другие, вы можете создать свой собственный класс и сохранить массив этого.
Если вы планируете работать дольше 7 дней, я бы также подумал о том, чтобы использовать List для отслеживания посещаемости в Student class - таким образом, метод, который будет отмечать посещаемость, может просто удалить первый элемент из списка, если он длится более 7 дней и сохраняет порядок дней - без необходимости делать это вручную (перемещать каждый элемент на одно место слева) - что если вы храните его в массиве.
Если вы хотите сделать это очень просто, вы можете использовать карту и сопоставить имя студента с массивом из 7 булевых, причем каждый булев, представляющий «настоящий» или «отсутствующий» в этот день недели.