2017-02-05 8 views
-4

У меня есть файл ratings.dat. Он содержит 5 полей. Это userid, movieid, рейтинг, возраст, moviename. movieid уникален 1 до 3450. Идентификатор_пользователя 1 до 6400. рейтинга дается из 5.как извлекать данные из .dat-файла, используя хэш-карту только в java

  1. Я хочу, чтобы загрузить файл в хэш-карту, проверьте наличие условий, является фильм, имеющие рейтинги> 3
  2. Топ 10 просмотренных пользователями
  3. Я хочу отсортировать 20 лучших фильмов по условию, что пользователи, просмотревшие как минимум 20 фильмов, я хочу выбрать 20 лучших фильмов.

Я не должен использовать SQL. Я хочу 100% Java-код. Я сделал это до сих пор: чтение файла в hashmap и печать содержимого этого файла.

import java.io.*; 
import java.util.*; 

public class Output{ 

    public static void main(String[] args) throws FileNotFoundException, IOException { 

    HashMap< Integer, String > hash = new HashMap< Integer, String >(); 
    BufferedReader rd = new BufferedReader(new FileReader ("resources/ratings.dat")); 
    String line = "::"; 

    int i = 0; 
    while ((line = rd.readLine()) != null){ 
     hash.put(i, line); 
     i++; 
    } 
    for (int j = 0 ; j < hash.size() ; j++){ 
     System.out.println(hash.get(j)); 
    } 
    } 
} 
+0

Пожалуйста, попробуйте что-то само собой, чтобы потерпеть неудачу и учиться. Вы только что выполнили половину своего задания и, вероятно, перейдете на другую половину. Попытка однажды - это то, что я бы предложил. – nullpointer

+0

Есть ли какая-то особая причина, почему вы хотите использовать «HashMap»? Спросить, потому что для меня это не похоже на лучший выбор. –

+0

Поскольку я не знаю формат строк вашего файла .dat, я не знаю, как определить, имеет ли фильм рейтинг> 3.2. Хуже того, 5 полей, похоже, не содержат данных, необходимых для поиска 10 лучших фильмов, просмотренных пользователями. Боюсь, вы спрашиваете о невозможности. –

ответ

0
  • Создать фильм класс, представляющий который имеет сказать 5 полей.
  • Итерации по строкам файлов и заполнение списка объекта Movie.
  • Используйте компаратор или сравнимые интерфейсы для сортировки списка объектов фильма.
  • Затем вызовите list.sort().

  • Вместо списка вы можете использовать любую коллекцию, такую ​​как Set или MAP.

Надеюсь, это поможет.