Фьючерсы возвращаются в том же порядке, что и отправленные вызываемые элементы, поэтому между индексами в списке вызываемых и списке фьючерсов существует однозначное соответствие.
Вы можете использовать традиционный цикл for,
for (int i=0; i<results.size(); i++) {
Future<Long> future = results.get(i);
Callable<Long> callable = col.get(i);
}
или поддерживать индекс,
int index = 0;
for (Future<Long> f: results) {
Callable<Long> c = col.get(index++);
}