Это должно быть выполнимо за O (n) время ... Карта хеша обычно реализуется как большой массив блоков, размер блока (обычно) прямо пропорционален размеру карты хешей. Чтобы извлечь набор ключей, необходимо выполнить итерацию сегмента, и для каждого элемента набора должен быть получен ключ (либо через промежуточный набор, либо через итератор с прямым доступом к блоку) ...
** РЕДАКТИРОВАНИЕ: Как уже отмечали другие, фактический метод keyset () будет запущен за O (1) время, однако итерация по набору ключей или передача его в выделенную коллекцию будет операцией O (n). Не совсем уверен, какой вы ищете **