kmp openharmony 数据排序与统计分析

在数据处理场景中,排序和统计分析是最基础也是最常用的算法操作。基于 Kotlin Multiplatform(kmp)与 openharmony,我们实现了一个轻量级的数据排序分析工具:输入数值序列,即可获得排序结果、最大值、最小值、平均值和中位数等统计指标,并通过 ArkTS 面板进行可视化呈现。本文包含简洁的 Kotlin 算法实现、JavaScript 桥接与 ArkTS UI 代码。
Kotlin 数据排序分析引擎
@JsExport
fun dataSortAnalyzer(inputData: String): String {
val sanitized = inputData.trim()
if (sanitized.isEmpty()) {
return "❌ 输入为空,请按 DATA-A:23,45,12,67,34|DATA-B:56,78,34,12,90 格式提供数据"
}
val datasets = parseDataSortSeries(sanitized)
if (datasets.isEmpty()) {
return "❌ 未解析到任何数据,请检查格式"
}
val insights = datasets.map { analyzeDataSort(it) }
val builder = StringBuilder()
builder.appendLine("📊 数据排序分析报告")
builder.appendLine("数据集数量: ${datasets.size}")
builder.appendLine("----- 数据集统计 -----")
insights.forEach {
builder.appendLine("${it.name} | 数量 ${it.count} | 最大值 ${it.max.roundToInt()} | 最小值 ${it.min.roundToInt()} | 平均值 ${it.avg.roundToInt()} | 中位数 ${it.median.roundToInt()} | 排序后 ${it.sorted.joinToString(",") { v -> v.roundToInt().toString() }}")
}
return builder.toString().trim()
}
该 Kotlin 函数接收形如 DATA-A:23,45,12,67,34|DATA-B:56,78,34,12,90 的字符串,解析各数据集的数值序列。analyzeDataSort 使用 Kotlin 标准库的 sorted() 进行排序,计算最大值、最小值、平均值,并实现简单的中位数算法。结果以文本形式返回,方便在 ArkTS 中展示。通过 @JsExport 标注,该函数可编译到 JavaScript,供 openharmony 端调用。
JavaScript 桥接函数
import { dataSortAnalyzer } from './hellokjs.js';
export function runDataSortAnalysis(payload) {
const normalized = typeof payload === 'string' ? payload.trim() : '';
if (!normalized) {
return '⚠️ 输入为空,请提供 DATA-A:23,45,12,67,34 形式的数据';
}
try {
const report = dataSortAnalyzer(normalized);
console.info('[data-sort] success', report.split('\n')[0]);
return report;
} catch (error) {
console.error('[data-sort] failed', error);
return `❌ 执行失败: ${error?.message ?? error}`;
}
}
桥接层负责输入校验和异常捕获,调用 Kotlin 引擎并返回结果。
ArkTS 数据排序分析面板
import { dataSortAnalyzer } from './hellokjs';
@Component
struct DataSortPanel {
@State inputData: string = 'DATA-A:23,45,12,67,34|DATA-B:56,78,34,12,90|DATA-C:10,20,30,40,50';
@State result: string = '';
@State loading: boolean = false;
execute() {
this.loading = true;
setTimeout(() => {
this.result = dataSortAnalyzer(this.inputData);
this.loading = false;
}, 100);
}
}
ArkTS UI 提供输入框、分析按钮和结果展示区域,用户可以输入数值序列并查看排序和统计结果。
算法说明
本实现采用 Kotlin 标准库的 sorted() 方法进行排序,时间复杂度为 O(n log n)。中位数计算采用简单的分情况处理:偶数个元素取中间两个数的平均值,奇数个元素取中间值。统计计算(最大值、最小值、平均值)均使用 Kotlin 集合的标准函数,代码简洁高效。
应用场景
该工具适用于快速数据分析和验证场景,例如:验证数据质量、快速计算统计指标、对比多组数据的基本特征。通过 kmp 与 openharmony 的协同,可以在终端设备上快速完成数据排序和统计分析,无需依赖大型数据处理工具。***
欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)