Java:从文本中随机提取不重复的某几行

简介: Java:从文本中随机提取不重复的某几行

实现步骤

  1. 【第一步】 读取文本每行,转换为List集合
  2. 【第二步】 根据提取数量,随机选取不重复的几行数据
  3. 【第三步】 提取结果


代码实现

/**
     * @Title: 提取文本
     * @MethodName:  abstractTxt
     * @param txt
     * @param abstractNum
     * @Return void
     * @Exception
     * @Description:
     *
     * @author: 王延飞
     * @date:  2019/10/5 21:47
     */
    public static void abstractTxt(String txt,int abstractNum) throws Exception{
        // 【第一步】文本每行,转换为List集合
        //新建一个字符缓冲输入流对象,将基本字符输入流作为其参数,将e.txt文件作为基本字符输入流参数,其为需要读取的文本文件
        BufferedReader br = new BufferedReader(new FileReader(txt));
        //定义字符串变量str
        String str;
        //新建一个ArrayList集合,用其父类给ls集合定义数据类型
        List<String> list = new ArrayList<String>();
        //将br输入流对象赋值给字符串变量,判断其是否为空
        while((str=br.readLine())!=null) {
            //若不为空,则将字符串str添加至集合ls中
            list.add(str);
        }
        // 【第二步】 根据提取数量,随机选取不重复的几行数据
        //文本数量
        int n = list.size();
        System.out.println("文本数量"+n);
        // 文本的行号-1
        int[] numbers = new int[n];
        for(int i = 0; i<numbers.length; i++){
            numbers[i] =i;
        }
        // 提取数量,构建随机不重复的数
        int[] result = new int[abstractNum];
        for (int i = 0; i < result.length; i++) {
            int r = (int)(Math.random() * n);
            result[i] = numbers[r];
            /*防止重复,去掉已经提取过的*/
            numbers[r] = numbers[n-1];
            n--;
        }
        // 【第三步】 提取结果
        //BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File("../../user/output.txt")),"utf-8"));
        BufferedWriter bw = new BufferedWriter(new FileWriter(new File("D:\\user\\output.txt")));
        for(int i:result){
            System.out.println("坐标:"+i);
            String string = list.get(i);
            bw.write(string);
            bw.newLine();
        }
        bw.flush();
        bw.close();
        //关闭字符缓冲输入流
        br.close();
    }
    public static void main(String[] args) throws Exception {
        abstractTxt("D:\\user\\input.txt", 10);
    }    

 


相关文章
|
JavaScript 前端开发 Java
java调用js实现富文本过滤
java调用js实现富文本过滤
123 0
|
安全 Java Spring
【Java用法】Java 过滤html标签获取纯文本信息
【Java用法】Java 过滤html标签获取纯文本信息
371 0
|
10月前
|
Java API Apache
Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
【10月更文挑战第29天】Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
703 5
|
前端开发 Java
基于Java爬取微博数据(二) 正文长文本+导出数据Excel
【5月更文挑战第12天】基于Java爬取微博数据,正文长文本+导出数据Excel
|
XML Java 数据格式
Java用xpdf库获取pdf文件的指定范围文本内容
Java用xpdf库获取pdf文件的指定范围文本内容
208 1
|
存储 Java
探索Java String:优雅处理文本数据
在Java编程世界中,字符串(String)是一种常见的数据类型,用于存储文本信息。字符串的处理在实际开发中经常涉及到循环操作,以便逐个处理字符串中的字符。本文将带您深入了解Java中对字符串的循环处理,包括循环遍历字符、字符串拼接、字符串分割等操作,助您优雅处理文本数据。
|
存储 搜索推荐 算法
Java中的文本搜索与全文检索引擎
Java中的文本搜索与全文检索引擎
|
Java 程序员 Spring
“解密Java文本读取:File与MultipartFile“
“解密Java文本读取:File与MultipartFile“
363 0
|
Java 语音技术 Windows
一篇文章讲明白java文本转语音
一篇文章讲明白java文本转语音
111 0