把数组中的key都取出来然后去重

今日接到一个小需求,一张表有类似这样的数据:(下面是一行)

但是每行的数据,主要是key不一样,我们想把所有的key取出来,并且做个去重。

首先我先在mysql中,

SELECT GROUP_CONCAT(REPLACE(REPLACE(JSON_KEYS(字段名),'[',''),']',''),',') FROM `表名` 

取出每一行的key并拼在一行中,然后就用java把他们都切割并且去重。这里用java是考虑到mysql切割成数组以后,有大量数据的话,难以取到每个值去做处理。

java代码如下:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.io.FileOutputStream;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class TextFileProcessor {
    public static void main(String[] args) {
        try {
            // 读取文本文件
            String filePath = "xxxx.txt";
            String content = readTextFile(filePath).replace("\"","");

            // 切割文本为数组
            String[] wordsArray = content.split(",");

            // 去除重复元素
            String[] uniqueWordsArray = removeDuplicates(wordsArray);

            // 打印结果
            System.out.println("Original Array: " + Arrays.toString(wordsArray));
            String excelFilePath = "output.xlsx";
            writeArrayToExcel(uniqueWordsArray, excelFilePath);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private static String readTextFile(String filePath) throws IOException {
        StringBuilder content = new StringBuilder();
        try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
            String line;
            while ((line = reader.readLine()) != null) {
                content.append(line).append("\n");
            }
        }
        return content.toString();
    }

    private static String[] removeDuplicates(String[] array) {
        // 使用HashSet去除重复元素
        HashSet<String> uniqueSet = new HashSet<>(Arrays.asList(array));
        // 转换回数组
        return uniqueSet.toArray(new String[0]);
    }

    private static void writeArrayToExcel(String[] array, String excelFilePath) throws IOException {
        try (Workbook workbook = new XSSFWorkbook()) {
            Sheet sheet = workbook.createSheet("Array Data");

            // 创建行
            Row row = sheet.createRow(0);

            // 将数组中的值写入Excel的列
            for (int i = 0; i < array.length; i++) {
                Cell cell = row.createCell(i);
                cell.setCellValue(array[i]);
            }

            // 将Workbook写入到文件
            try (FileOutputStream outputStream = new FileOutputStream(excelFilePath)) {
                workbook.write(outputStream);
            }
        }
    }
}

pom.xml需要加一个:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>4.1.2</version> <!-- Replace with the latest version -->
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>4.1.2</version> <!-- Replace with the latest version -->
</dependency>

相关推荐

  1. js数组对象方法

    2024-01-30 07:52:01       38 阅读
  2. 实现数组方式

    2024-01-30 07:52:01       37 阅读
  3. 判断数组对象某个值是否有相同

    2024-01-30 07:52:01       40 阅读
  4. js 数组

    2024-01-30 07:52:01       41 阅读
  5. ArrayList数组

    2024-01-30 07:52:01       7 阅读
  6. js常用数组方法

    2024-01-30 07:52:01       34 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-30 07:52:01       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-30 07:52:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-30 07:52:01       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-30 07:52:01       20 阅读

热门阅读

  1. go 面试题

    2024-01-30 07:52:01       25 阅读
  2. [EFI]三星NP350XAA 电脑 Hackintosh 黑苹果efi引导文件

    2024-01-30 07:52:01       30 阅读
  3. 一台服务器上如何安装2个版本的达梦数据库

    2024-01-30 07:52:01       43 阅读
  4. Aspose.Words简单介绍

    2024-01-30 07:52:01       32 阅读
  5. linux 脚本 正则表达式

    2024-01-30 07:52:01       36 阅读