Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何仅在java中使用哈希映射从.dat文件检索数据_Java_Hashmap - Fatal编程技术网

如何仅在java中使用哈希映射从.dat文件检索数据

如何仅在java中使用哈希映射从.dat文件检索数据,java,hashmap,Java,Hashmap,我有一个ratings.dat文件。它包含5个字段。它们是userid、movieid、rating、age、moviename。movieid在1到3450之间是唯一的。用户标识1到6400。评分为5分 我想将文件加载到哈希映射中,检查电影分级>3的条件 用户观看的十大电影 我想按照至少看过20部电影的用户选择前20部电影的条件对前20部电影进行排序 我不应该使用SQL。我想要100%的Java代码。到目前为止,我一直在做:读取hashmap中的文件并打印该文件的内容 import java.

我有一个
ratings.dat
文件。它包含5个字段。它们是userid、movieid、rating、age、moviename。movieid在1到3450之间是唯一的。用户标识1到6400。评分为5分

  • 我想将文件加载到哈希映射中,检查电影分级>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));
        }
      }
    }
    
    import java.io.*;
    导入java.util.*;
    公共类输出{
    公共静态void main(字符串[]args)抛出FileNotFoundException、IOException{
    HashMaphash=newhashmap();
    BufferedReader rd=新的BufferedReader(新的文件阅读器(“resources/ratings.dat”);
    字符串行=“::”;
    int i=0;
    而((line=rd.readLine())!=null){
    hash.put(i,行);
    i++;
    }
    对于(int j=0;j
    • 创建一个表示电影的类,该类有5个字段
    • 迭代文件行并填充电影对象列表
    • 使用comparator或Comparable接口对电影对象列表进行排序
    • 然后调用list.sort()

    • 您可以使用集合(如集合或映射)代替列表


    希望这能有所帮助。

    请自己尝试一些失败和学习的东西。你刚刚完成了一半的作业,可能会在这里把另一半传下去。我建议您尝试一次。您想使用
    HashMap
    有什么特别的原因吗?问,因为对我来说这似乎不是最好的选择。因为我不知道你的
    .dat
    文件的行格式,我不知道如何确定一部电影的评级是否>3.2。更糟糕的是,这5个字段似乎没有包含查找用户观看的前10部电影所需的数据。恐怕你是在问一个不可能的问题。使用hashmap并没有什么特别的原因,只是我已经尝试过了。你可以通过计算每部电影的用户数量来找到前10名。现在,@DivagarGovindan,计数应该可以了。