当前位置: 首页 > 知识库问答 >
问题:

处理1GB数据文件读取字并计算最大字长?

公良信然
2023-03-14
public class TestFiles {

    public static void main(String[] args) {
        int minLength = Integer.MAX_VALUE;
        int maxLength = Integer.MIN_VALUE;
        String minWord = "";
        String maxWord = "";
        List<String> words = new ArrayList<>();
        try {
            File myObj = new File("C:\\Users\\Downloads\\java.txt");
            Scanner myReader = new Scanner(myObj);
            while (myReader.hasNextLine()) {
                String data = myReader.nextLine();
                String[] dataArray = data.split(" ");
                List<String> list = Arrays.asList(dataArray);
                for (String s : list) {
                    if (s.length() < minLength) {
                        minLength = s.length();
                        minWord = s;
                    } else if (s.length() > maxLength) {
                        maxLength = s.length();
                        maxWord = s;
                    }
                }
            }
            myReader.close();
        } catch (Exception e) {
            // TODO: handle exception
        }
        System.out.println("min length " + minLength + " - max lenth " + maxLength);
        System.out.println("min length word " + minWord + " - max lenth word " + maxLength);
    }
}

你能回答一下吗?我该怎么解决这个?

共有1个答案

梁俊友
2023-03-14

当1GB的字被压缩成一行时,问题就变得很明显了!

解决方案:不是按行处理输入,而是按词处理输入,这样很有效!;)

瞧!

public class TestFiles {

  public static void main(String[] args) {
    int minLength = Integer.MAX_VALUE;
    int maxLength = Integer.MIN_VALUE;
    String minWord = "";
    String maxWord = "";
    try {
        File myObj = new File("C:\\Users\\Downloads\\java.txt");
        Scanner myReader = new Scanner(myObj);
        while (myReader.hasNext()) {
            String word = myReader.next();
            if (word.length() < minLength) {
              minLength = word.length();
              minWord = word;
            } else if (word.length() > maxLength) {
              maxLength = word.length();
              maxWord = word;
            }
          }
        }
        myReader.close();
    } catch (Exception e) {
        // TODO: handle exception
    }
    System.out.println("min length " + minLength + " - max lenth " + maxLength);
    System.out.println("min length word " + minWord + " - max lenth word " + maxLength);
  }
}
 类似资料:
  • 问题内容: 我有一个大文件,需要阅读并制作字典。我希望尽快。但是我在python中的代码太慢了。这是显示问题的最小示例。 首先制作一些假数据 现在,这里是一个最小的python代码片段,可以读入它并制作一个字典。 时间: 但是,可以更快地读取整个文件,如下所示: 我的CPU有8个核心,是否可以在python中并行化此程序以加快速度? 一种可能是读取大块输入,然后在不同的非重叠子块上并行运行8个进程

  • 档案员。txt包含两类员工的详细信息,即月薪和小时津贴。如果是月薪员工,则该文件包含名字、姓氏、性别、职级、类型和基本工资,如果是小时薪员工,则包含小时工资和工作小时数。该文件的示例如下所示: 约翰·史密斯M经理每月45000.00 Sunil Bates M高级每小时700.00 45 梁爱娃F警官每月30500.00 我要写一个程序,会看每个员工,计算奖金占基本工资的百分比,对于一个按小时计酬

  • 问题内容: 我有大量文件,所有文件都(应该)是在文件末尾附加一个前哨字符(1个字节)。如何读取最后一个字节(以确保它是字符)并将其截断为大小(即:删除字符)? 我知道我可以阅读整个内容,然后将其写回去减去最后一个字符,但是必须有一种方法可以获取特定的字节,不是吗? 问题答案: 您可以使用RandomAccessFile类查找文件的末尾,读取它,然后使用截断该文件。 更新: 这是一些代码: 注意:我

  • 在COBOL中,我从顺序行文件中读取。一行行,到EOF,诸如此类的 行的长度从40到80个字符不等。我需要知道,每行有多少个字符。但是行可以以一些空格结束,我也需要计算。所以我不能在程序中从变量取字符串的长度。READ语句是否有返回值,它返回已读行的字符数(直到达到CRLF)?

  • 问题陈述: 我需要得到一个给定数字的最佳面额组合。例如:我有三种面额,给定的数字是30,那么列表应该返回

  • 本文向大家介绍python实现用类读取文件数据并计算矩形面积,包括了python实现用类读取文件数据并计算矩形面积的使用技巧和注意事项,需要的朋友参考一下 1.创建一个类Rectangle,已知a、b求面积,求三角形的面积 2.结合题目一,从题目一文件中读取数据,并采用类的方法,将计算的结果写在另一个文档中。 (1)利用类进行计算一个矩形的面积,已经a、b边长。 class Rectangle: