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

news2024/11/17 7:45:48

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

但是每行的数据,主要是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>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1418160.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在租户内启用SharePoint Embedded

要开启 SharePoint Embedded&#xff0c;你得是管理员&#xff0c;然后按照这些步骤操作&#xff1a; 登录到你的 SharePoint 管理中心。在左边的菜单里找到“设置”选项&#xff0c;点进去。 3. 在设置页面里找到“SharePoint Embedded 应用”。 4.如果这个功能还没开启&…

高阶测试开发必备技能: k8s入门!

现在稍微有点规模公司都是基于docker容器化部署技巧&#xff0c;K8s现在主流&#xff0c;应用最广的容器集群管理技术。 k8s全称kubernetes&#xff08;首字母为 k、首字母与尾字母之间有 8 个字符、尾字母为 s&#xff0c;所以简称 k8s&#xff09;&#xff0c;基于Docker容器…

Top-level await is not available in the configured target environment

当在使用 Vite 进行项目构建时&#xff0c;可能会遇到如下错误提示&#xff1a;ERROR: Top-level await is not available in the configured target environment。 问题原因 这个错误通常是由于项目配置中的目标浏览器环境不支持 JavaScript 的 top-level-await 特性。top-le…

探索Viper-适用于GoLang的完整配置解决方案

前言 对于现代应用程序&#xff0c;尤其大中型的项目来说&#xff0c;在程序启动和运行时&#xff0c;往往需要传入许多参数来控制程序的行为&#xff0c;我们可以通过命令行参数&#xff0c;环境变量&#xff0c;配置文件等方式来将参数传递给程序。而Viper库为Golang语言开发…

Mac安装配置maven

Mac安装配置maven 官网下载地址&#xff1a;https://maven.apache.org/download.cgi 下载好以后解压配置 maven 环境变量 打开终端&#xff0c;输入命令打开配置文件./bash_profile open ~/.bash_profile输入i进入编辑模式,进行maven配置; MAVEN_HOME为maven的本地路径 ex…

VR全景技术对党建宣传有什么好处,如何应用在党建宣传

引言&#xff1a; 近年来&#xff0c;随着VR&#xff08;虚拟现实&#xff09;全景技术的不断发展&#xff0c;其在各个领域的应用也愈加广泛。在党建宣传方面&#xff0c;VR全景技术正逐渐成为一种创新而强大的工具&#xff0c;为组织的思想宣传提供了全新的方式。 一&#x…

SpringBoot 实现自定义指标监控

一、添加业务监控指标 在 spring-web-prometheus-demo 项目的基础上&#xff0c;我们添加一个 PrometheusCustomMonitor 类。在这里面我们定义了三个业务指标&#xff1a; order_request_count&#xff1a;下单总次数order_amount_sum&#xff1a;下单总金额 Component publ…

全球医疗器械产品查询-30个官网查询系统合集!

国内外上市医疗器械产品数据及注册备案信息是医疗器械行业中极其重要的情报之一。大多数医械人都知道国内医疗器械产品信息可在NPMA及各省市药监局官网查询&#xff0c;但对于国际的医疗器械产品数据披露平台&#xff0c;由于语言壁垒及网页设计习惯差异&#xff0c;查询却不太…

深入了解Redis:选择适用于你的场景的持久化方案

自然语言处理的发展 文章目录 自然语言处理的发展强烈推荐前言&#xff1a;Redis提供了几种主要的持久化方案&#xff1a;RDB快照持久化&#xff1a;工作原理&#xff1a; AOF日志文件持久化&#xff1a;混合持久化&#xff1a; 总结强烈推荐专栏集锦写在最后 强烈推荐 前些天…

厨房用品国际市场拓展:如何利用海外网红营销助力品牌成长

随着全球化的加速和互联网的普及&#xff0c;越来越多的中国厨房用品品牌开始寻求海外市场的拓展。而在这一过程中&#xff0c;海外网红营销正崭露头角&#xff0c;为品牌的跨足国际市场提供了强有力的助力。本文Nox聚星将和大家探讨如何通过海外网红营销助力厨房用品品牌在海外…

第四篇【传奇开心果系列】beeware的Toga开发移动应用示例:健身追踪应用

传奇开心果博文系列 系列博文目录beeware的Toga开发移动应用示例系列博文目录前言一、记录存储运动活动数据二、添加添加统计显示功能三、添加图表显示数据分析功能四、增加健身计划管理五、增加备份数据恢复数据功能六、初步整合代码示例七、增加登录验证功能八、完成最终整合…

什么是数据库设计?基本步骤有哪些?

数据库设计结构图 实线代表输入&#xff0c;虚线代表输出&#xff0c;每个节点的输出作为下一个节点的输入。 基本步骤 1.需求分析阶段 数据需求分析是在项目确定之后&#xff0c;用户和设计人员对数据库应用系统所要涉及的内容&#xff08;数据&#xff09;和功能&#xff0…

vmware虚拟机centos8共享文件夹挂载

1.设置虚拟机共享文件夹 2. 上述设置完毕之后&#xff0c;重启进入虚拟机&#xff0c;查看出现的共享文件夹名称 vmware-hgfsclient 3.查看是否有挂载目录&#xff0c;挂在目录默认为 /mnt/hgfs。没有时可以使用以下命令创建 mkdir /mnt/hgfs 4. 手动挂载目录--只能实现一次 注…

【python】argparse解析参数的过程

python基础知识 python文件解析if \_\_name\_\_ \_\_main\_\_的作用import到底导入了什么&#xff1f;argparse解析命令行参数的过程Debug—案例分析 python文件解析 Python和C语言的编译、执行过程有很大区别。我们先回顾一下c语言的执行过程&#xff0c;首先代码文件要编译…

GitLab 中国发行版如何设置镜像拉取策略?

最近在用极狐GitLab&#xff08;极狐GitLab 可以理解为 GitLab 在中国的发行版&#xff09; CI/CD 的时候遇到一个问题&#xff1a;CI/CD 中有一个 stage 需要拉取 dockerhub 上的镜像&#xff0c;但是由于 dockerhub 在国内的访问不是很顺畅&#xff0c;经常发生 timeout 的情…

pytest框架的基本使用

1. 测试框架的作用 测试框架不关系用例的内容 它关心的是&#xff1a;用例编排和结果收集 2. pytest框架的特点 1. 适用于python语言 2. 用法符合python风格 3. 有丰富的生态 3. 安装pytest框架 1. 新建一个项目 2. 在项目终端窗口输入如下命令&#xff0c;用于安装py…

危险!这3本期刊陆续被三大数据库剔除!2024年EI期刊目录首次更新!

【SciencePub学术】2024年1月1日&#xff0c;爱思唯尔更新了EI Compendex收录期刊目录。 继上次EI期刊目录更新之后&#xff0c;本次1月更新共有3本期刊发生变动&#xff1a; 其中&#xff0c;有3本期刊停止收录&#xff08;DISCONTINUED&#xff09;&#xff0c;连续出版/核心…

如何使用Docker部署WBO白板并实现公网地址远程访问

本文主要是如何使用Docker部署WBO白板并实现公网地址远程访问的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是青衿&#x1f947; ☁️博客首页&#xff1a;CSDN主页放风讲故事 &#x1f304;每日一句&am…

MySql语句中的ON DUPLICATE KEY UPDATE使用详解

目录 一&#xff1a;主键索引&#xff0c;唯一索引和普通索引的关系1. 主键索引2. 唯一索引&#xff1a;3. 普通索引&#xff1a;1&#xff1a;ON DUPLICATE KEY UPDATE功能介绍&#xff1a;2&#xff1a;ON DUPLICATE KEY UPDATE测试样例总结&#xff1a; 执行以下实验进行分析…

苹果m1、m2安装blender GIS,解决not Imageio 报错

blender-GIS 能够在地图上生成地形&#xff0c;如下图所示&#xff1a; 使用blenderGIS过程中会有 imageio 找不到的情况&#xff0c; 网上的 imageio 用在苹果电脑的M1、M2芯片上好像还是没有出图&#xff0c;似乎这个 imageio 这个已经是好几年前的代码&#xff0c;没能适配…