Определенно нет встроенной функции для этого.
Первое, что вам нужно сделать, это выяснить уникальные ключи на карте второго уровня и назначить их столбцам. Может быть, вы уже знаете их (если они исправлены), в противном случае вам придется перебрать их все один раз и собрать их в набор.
Если у вас есть фиксированные ключи, вам следует рассмотреть вопрос об исключении карты второго уровня и использовании для этого класса бобов Java (книги).
Если вы действительно собираетесь печатать матрицу, вам нужно подумать о форматировании, в основном о ширине столбцов. Опять же, это также можно исправить априори, или вы можете посмотреть на данные (все или образец), чтобы выяснить это.
Игнорируя форматирование на мгновение, вы можете вывести что-то вроде CSV, а затем выполнить цикл
карта (в идеале в порядке сортировки ключей) и выводить одну строку для каждой записи (книги). Затем в каждой строке вы должны перебрать столбцы (список ключей) и вывести каждое поле.