Вы можете построить 3 компаратора - 1 на основе каждого элемента критерия, а затем вызвать Collections.sort (список, компаратор) для получения каждой сортировки.
Если вы делаете это много раз в одном и том же списке, сделайте 3 копии.
Обратите внимание, что идея итератора на самом деле не будет ужасно эффективной, поскольку для нее потребуется какой-то способ проследить по списку, который будет по меньшей мере столь же уродливым, как и сортировка.То есть итератору нужно будет знать, какой элемент будет следующим, иным образом, кроме естественного порядка в списке.Пересортировать список так же легко, как и пытаться перемещаться по нему в естественном порядке.