Пока решал задачу возник данный вопрос. Если внутри public static main, написать просто joinData(), то идея ругается и предлагает убрать статичность у main() либо добавить статичность y joinData(). В правильном решении написано
new Solution().joinData();
Получается мы создаем новый объект Solution, вызываем его метод, а метод использует коллекции из "старого" объекта Solytion? Запускается ли при этом метод main() у вновь созданного объекта? Почему joinData() использует коллекции "старого" объекта, а не вновь созданного? В общем куча вопросов и ни одного ответа...