Эффективный способ группировки данных в большом файле с использованием Java

Рассмотрим файл следующего формата, содержащий n количество записей и i количество столбцов. Если данные необходимо сгруппировать по первому столбцу, как эффективно их обработать с помощью Java? Предположим, что n = 40 миллионов.

Стандартным способом может быть использование BufferedReader для циклического просмотра каждой строки и организации данных на карте с столбцом A в качестве ключа. Есть ли более эффективный и оптимальный способ?

A1~1~2
A1~2~5
A2~1~3
A1~3~4
....
....

Приведенный выше файл должен быть организован в карту столбца A и POJO, как показано ниже.

A1 [(1,2),(2,5),(3,4)]
A2 [(1,3)]

person ram    schedule 15.10.2015    source источник
comment
Вы спрашиваете, есть ли способ прочитать эти данные, не читая каждую строку? Какую часть того, что вы пытаетесь сделать, вы считаете неэффективной? Вы не показываете свой код для чтения файла, поэтому трудно сказать, о чем вы беспокоитесь.   -  person thatidiotguy    schedule 15.10.2015
comment
Если конечным результатом является Map, содержащий все записи, обычный цикл так же эффективен, как и использование потоков.   -  person VGR    schedule 15.10.2015
comment
@thatidiotguy Я спрашиваю, есть ли способ распараллелить операцию и ускорить ее. Код будет таким же, как при чтении файла с помощью BufferedReader традиционным способом. Вскоре я обновлю вопрос с примером кода.   -  person ram    schedule 16.10.2015
comment
На самом деле вы не можете прочитать один файл с несколькими потоками (см. этот вопрос) (ну, вы могли бы, но узким местом является IO, так что быстрее не будет).   -  person Tunaki    schedule 16.10.2015
comment
Либо загрузите весь файл в память и работайте оттуда, либо используйте базу данных...   -  person assylias    schedule 16.10.2015