【问题标题】:How Can I Detect 1500 Random Lines From a big Text File in Java?如何从 Java 中的大文本文件中检测 1500 条随机行?
【发布时间】:2014-01-08 12:34:14
【问题描述】:

我是 Java 新手。我有一个学校项目。我应该检测一个大文本文件的 1500 行随机行吗?实际上,文本文件包含 500 万行。我想逐行读取 .txt 文件,然后随机检测 1500 行,并将随机行写入新的 .txt 文件 请您在这件事上帮助我。

提前致谢。

【问题讨论】:

  • 您的意思是“选择”而不是“检测”吗?您可以多次选择一条线路吗?你试过什么?
  • 在寻求帮助之前应该尝试解决一个(微不足道的)问题:因此,投反对票。
  • 我被正确地提醒了答案和 cmets 之间的区别,所以:StackOverflow 并不是一个真正的家庭作业网站,所以我们不回答这类问题。如果要好好尝试并表现出一些理解,然后带着小的、原子性的问题来找我们,我们将非常乐意以一种可以扩大您学习的方式提供帮助。除此之外,欢迎来到 SO,我希望你在这里过得愉快。
  • 我正在尝试使用 RandomAccessFile、LineIterator 和经典的 BufferedReader 方法,但这些似乎不是好的解决方案。
  • 亲爱的乔尼,你是对的。我的意思是选择而不是检测。如果你能帮助我,我将非常感激。

标签: java random


【解决方案1】:

只需在 0 到 5 000 000 之间选择 1500 个随机数,然后从文件中通过这些数字获取行。

【讨论】:

    【解决方案2】:

    首先,创建一个扫描器对象来解析文件:

    File file = new File("filename.txt");
    Scanner scanner = new Scanner(file);
    

    然后,使用.nextLine() 方法读取每一行,使用一个新的随机整数来改变正在读取的行:

    Random rand = new Random();
    int  randomInt;
    String line;
    
    for (int j = 0; j < 1500; j++){
        randomInt =  = rand.nextInt(numberOfLinesInFile + 1);
        for (int i = 0; i < randomInt + 1; i++) {
            line = scanner.readLine();
        }
        newString += line;
    }
    

    newString 然后将包含 1500 行的新列表

    您还可以生成 1500 个随机数,创建要读取的行数组,然后仅在计数器等于这些行号时才添加正在读取的行。这将减少实现相同结果的循环次数。以上应该足以让你继续......

    【讨论】:

      猜你喜欢
      • 2023-03-25
      • 2015-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-26
      相关资源
      最近更新 更多