记录两个赋值名次的方法,顺序保持不变

Unity UGUI性能优化:循环滚动列表原理、实现与避坑指南 在Unity UI开发中,处理大量数据列表时,性能优化是核心挑战。其原理在于通过对象池技术复用UI元素,结合数据驱动视图模式,仅渲染可视区域内的项,从而大幅减少Draw Call和Canvas重建开销。这项技术的核心价值在于显著降低CPU负载和内存占用,实现流畅的滚动体验。应用场景广泛覆盖手游排行榜、社交应用聊天记录、电商商品列表等需要展示海量数据的界面。本文深入解析循环滚动列表的实现机制,针对UGUI性能瓶颈提供解决方案,并详细探讨数据绑定、对象池管理及常见问题排查,帮助开发者掌握这项提升应用性能的关键技 阅读详情

 有这样一个需要,在一个list<Bean>中,给Bean中的多个字段进行排名,例如数量、金额、同比、占比等添加上名次。写了以下两个工具类,将List,Bean.class和需要排名的字段传入即可

 1     /**
 2      * @return void
 3      * @Author 龙谷情
 4      * @Description 进行数值数据表格的名次赋值
 5      * @Date 10:36 2023/3/17
 6      * @Param [list, field]
 7      **/
 8     public static <T> void getDigitRanking(List<T> list, Class<T> clazz, String... fields) {
 9         Iterator<String> fieldIt = Arrays.stream(fields).iterator();
10         while (fieldIt.hasNext()) {
11             String field = fieldIt.next();
12             list.forEach(item1 -> {
13                 List<Double> tmpList = new ArrayList<>(16);
14                 JSONObject itemJson1 = JSONObject.parseObject(JSONObject.toJSONString(item1));
15                 if (itemJson1.getIntValue("orgId") != 417) {
16                     AtomicInteger ranking = new AtomicInteger();
17                     list.forEach(item2 -> {
18                         JSONObject itemJson2 = (JSONObject) JSONObject.toJSON(item2);
19                         if (itemJson2.getIntValue("orgId") != 417) {
20 
21                             if (!tmpList.contains(itemJson2.getDoubleValue(field))) {
22                                 tmpList.add(itemJson2.getDoubleValue(field));
23                                 if (itemJson1.getDoubleValue(field) == itemJson2.getDoubleValue(field)) {
24                                     ranking.getAndDecrement();
25                                 } else if (itemJson1.getDoubleValue(field) < itemJson2.getDoubleValue(field)) {
26                                     ranking.getAndIncrement();
27                                 }
28                             }
29                         }
30                     });
31                     itemJson1.put(field + "Ranking", ranking.intValue() + 2);
32                     T rankBean = JSONObject.parseObject(itemJson1.toJSONString(), clazz);
33                     try {
34                         MyBeanUtils.merge(item1, rankBean);
35                     } catch (Exception e) {
36                         logger.info(e.getMessage());
37                     }
38                 }
39             });
40         }
41     }
42 
43     /**
44      * @Author 龙谷情
45      * @Description 进行百分号数据表格的名次赋值
46      * @Date 18:17 2023/3/22
47      * @Param [list, clazz, fields]
48      * @return void
49      **/
50     public static <T> void getPercentRanking(List<T> list, Class<T> clazz, String... fields) {
51         Iterator<String> fieldIt = Arrays.stream(fields).iterator();
52         while (fieldIt.hasNext()) {
53             String field = fieldIt.next();
54             list.forEach(item1 -> {
55                 List<String> tmpList = new ArrayList<>(16);
56                 JSONObject itemJson1 = JSONObject.parseObject(JSONObject.toJSONString(item1));
57                 if (itemJson1.getIntValue("orgId") != 417) {
58                     AtomicInteger ranking = new AtomicInteger();
59                     list.forEach(item2 -> {
60                         JSONObject itemJson2 = (JSONObject) JSONObject.toJSON(item2);
61                         if (itemJson1.getIntValue("orgId") != 417) {
62                             Double value1 = 0.00;
63                             Double value2 = 0.00;
64                             if (!itemJson1.getString(field).equals("--")) {
65                                 value1 = Double.valueOf(itemJson1.getString(field).substring(0, itemJson1.getString(field).length() - 1));
66                             }
67                             if (!itemJson2.getString(field).equals("--")) {
68                                 value2 = Double.valueOf(itemJson2.getString(field).substring(0, itemJson2.getString(field).length() - 1));
69                             }
70                             if (!tmpList.contains(itemJson2.getString(field))) {
71                                 tmpList.add(itemJson2.getString(field));
72                                 if (value1.equals(value2)) {
73                                     ranking.getAndDecrement();
74                                 } else if (value1 < value2) {
75                                     ranking.getAndIncrement();
76                                 }
77                             }
78                         }
79                     });
80                     itemJson1.put(field + "Ranking", ranking.intValue()+2);
81                     T rankBean = JSONObject.parseObject(itemJson1.toJSONString(), clazz);
82                     try {
83                         MyBeanUtils.merge(item1, rankBean);
84                     } catch (Exception e) {
85                         logger.info(e.getMessage());
86                     }
87                 }
88             });
89         }
90     }

 使用:

List<CompensationFormEntity> compensationFormEntityList
EvaluationUtils.getDigitRanking(compensationFormEntityList, CompensationFormEntity.class, "sumCount", "sumMoney", "sumCountYear", "sumMoneyYear");
List<CompensationMaintenance> compensationMaintenanceList
EvaluationUtils.getPercentRanking(compensationMaintenanceList, CompensationMaintenance.class, "sumMaintenanceCostRate", "sumMaintenanceCostYearRate");
C语言课程设计-学生成绩管理课程设计 1. 学生成绩管理系统 功能基本要求:按班级建立学生文件,对应增删改功能;建立学生成绩文件(每个学生至少三门课),对应增删改功能;学生成绩可以按学生、按课程求平均;提供必要的查询功能;找出有两门课以上不及格的学生,输出他们的学号和全部成绩,要求用指针函数实现:float *Search(float (*p)[5] 阅读详情

相关推荐

ArcGIS实战:利用IDW反距离权重法实现气象数据的批量空间插值

本文详细介绍了如何利用ArcGIS中的IDW反距离权重法实现气象数据的批量空间插值。通过实战案例和脚本示例,展示了IDW插值在气象数据分析中的高效应用,包括算法原理、参数调优、批处理自动化及常见问题解决方案,帮助用户快速生成连续分布的气象地图。

weixin_29051149的博客 240

不同实体的List相互间赋值

在开发过程中,经常遇到不同类型的List相互赋值的,例如List<A>要换成List<B>,Object A 包含了Object B的属性,平常用到的都是循环List<A>,将A的值赋值给B,然后LIst<B>在一个个添加到list集合中,有时感觉太麻烦了。具体还有其他方式,可继续参考这篇文章。

weixin_48788601的博客 1072

别再手动量了!用Python+Open3D给BIM模型做‘CT扫描’,自动揪出施工误差(附完整代码)

本文介绍如何利用Python和Open3D技术实现BIM模型的毫米级施工误差自动检测。通过点云预处理、模型配准和偏差分析,系统能自动生成三维差异热力图和验收报告,显著提升施工质量检测效率。特别适合混凝土结构错位和钢结构安装偏差等常见问题的智能分析。

weixin_29284657的博客 243

利用Java反射实现两个具有相同属性bean赋值

【代码】利用Java反射实现两个具有相同属性bean赋值。

JH_Zhai的博客 1314

CCS配置MSPM0G3507(七) 编码器(TIMER-QEI)

1.选择时钟源 BUSCLK2.时钟分频配置为1分频3.分频系数配置为14.若勾选 Start ,则生成程序后会自动开启定时器的计数,否则需手动在程序中开启5.Load Value 设置为65535。

kaneki_lh的博客 1万+

金融监管压力测试场景生成

压力测试是一种评估金融资产或机构在极端市场条件下的表现和风险承受能力的方法。它通过模拟各种不利的市场情景,测试金融机构在这些情景下的财务状况和运营能力。压力测试的作用在于帮助金融机构识别潜在风险,评估应对策略,并制定应急预案。总结压力测试场景生成系统的开发过程和实现效果,强调其在金融监管中的重要性和应用价值。随着金融市场的发展,实时压力测试将越来越重要。未来,压力测试需要更加注重实时性和动态性,及时反映市场的变化。本文详细介绍了金融监管压力测试的重要性、核心概念、算法原理、系统架构以及实战案例。

AI天才研究院 1208

mysql:名次排名 (并列与不并列)

mysql语法笔记  2018-08-23 | 阅读:次   说明 做后台的难免与sql接触,到目前为止搞过的sql大致都是一些简单的sql语句构造,在这里准备把自己在写sql时遇到的一些比较少见的用法记录一下。 又学习了一些之前一直没搞清的: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE...

weixin_40790313的博客 1万+

uniApp微信小程序:利用live-pusher人脸活体检测功能+完整示例代码,uniapp使用live-pusher直播推流组件实现人脸验证-活体检测,检测人脸中的动作包括眨眼、张嘴、左右摇头动作

UniApp 使用 live-pusher 实现人脸活体检测(附完整源码)uniapp开发微信小程序人脸检测活体检测,在uni-app的微信小程序项目中使用live-pusher实现人脸识别,uniapp使用live-pusher实现模拟人脸识别效果,张张嘴、眨眨眼、向左摇头、向右摇头等动作,免费使用人脸活体检测的插件方案,uniapp小程序怎么免费使用人脸活体,直播推流,UNIAPP微信小程序使用live-pusher实现人脸识别(拍照)功能,在uni-app项目中实现人脸识别,既使用uni-app中的l

✅ 精选推荐文章 3013

挑战60天(第4天/ 7月-25日),每天Leetcode刷题,数据结构与算法

挑战60天(第4天/ 7月-25日),每天Leetcode刷题,数据结构与算法、希尔排序、移动零、相对名次

Mr_zhouxin123的博客 133

《HiVT: Hierarchical Vector Transformer for Multi-Agent Motion Prediction》论文阅读之HiVT

目录摘要1.介绍2.相关工作3.方法3.1. 总体框架3.2 场景表示 3.3 分层向量Transformer3.3.1 局部编码器3.3.2 全局交互模块3.3.3 多模态未来解码器3.4 训练4.实验4.1 实验设置4.2 消融研究 4.3. 结果5.结论 准确预测周围交通参与者的未来运动对于自动驾驶车辆的安全至关重要。最近,矢量化方法由于能够捕捉交通场景中的复杂交互而在运动预测领域占据主导地位。然而,现有的方法忽略了问题的对称性并且受到昂贵的计算成本的影响,面临着在不牺牲预测性能的情况

Gavinmiaoc的博客 3340

手把手教你学Simulink--基于Simulink的开关磁阻电机电流斩波控制仿真建模

特点:定子和转子均由普通硅钢片叠压而成,没有永磁体或绕组在转子上。工作原理:利用转子旋转时不同位置的磁阻变化产生转矩。控制挑战:由于SRM的高度非线性和磁饱和效应,需要复杂的控制算法来优化性能。利用Simscape Electrical中的模块构建SRM的物理模型,配置参数如电阻、电感等。matlab深色版本% 添加SRM电机模块根据实际需求调整电机参数。通过上述步骤,我们简要介绍了如何基于Simulink进行开关磁阻电机的电流斩波控制仿真建模。

MHD0815的博客 306

HarmonyOS 6.1 实战:将预置的静态数据数组通过 .slice() 浅拷贝后赋值给组件的 @State 变量

引言在移动端应用开发领域,HarmonyOS 6.1.1 的发布为开发者带来了全新的声明式 UI 编程范式,其中 ArkTS 语言作为 TypeScript 的超集,不仅继承了强类型系统的全部优势,还在此基础上深度整合了 HarmonyOS ArkTS API 24 的响应式状态管理能力。本文将以一个城市观星社区应用为典型案例,完整剖析一个具有小红书风格内容社区的架构设计思路、状态管理模型、组件化拆分策略以及深色星空主题的实现细节。这个应用涵盖了观星日志记录、天象日历展示、星空摄影分享、望远镜装备管理、观星

2501_92985290的博客 768

PyTorch实战(19)——变分自编码器(Variational Autoencoder,VAE)

变分自编码器 (Variational Autoencoder, VAE) 是一种结合了自编码器和概率建模的生成模型,通过编码器将输入数据映射到潜在空间中的概率分布,并通过解码器将从潜在空间采样得到的潜在变量映射回原始数据空间,实现了数据的生成和特征学习。本节中,将介绍变分自编码器的基本概念,并使用 PyTorch 实现变分自编码器生成新图像。

盼小辉丶的博客 2889

折半查找算法详解:从原理到实战,掌握高效搜索的核心

在计算机科学中,查找算法是处理有序数据的基础操作,其核心目标是在数据集中快速定位目标元素。折半查找(又称二分查找)基于分治思想,通过每次比较将搜索范围减半,将时间复杂度从顺序查找的O(n)优化至O(log n),显著提升了大规模数据处理的效率。该算法的技术价值在于其高效性和普适性,是构建高性能搜索系统、数据库索引以及实现快速排序后查找等场景的基石。在实际工程中,折半查找广泛应用于游戏排行榜、日志时间范围查询、资源调度等场景,通过标准库函数如lower_bound和upper_bound,开发者能轻松应对重复

weixin_34248487的博客 333

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

构建一款专业的钓鱼记录与渔获日志应用基于HarmonyOS API 24需要保留状态,可以考虑使用显隐切换(visibility)或 LazyForEach 配合组件缓存等高级技术

在 HarmonyOS NEXT 正式商用的背景下,ArkTS 作为鸿蒙生态的官方应用开发语言,正在从传统的命令式 UI 开发范式向声明式 UI 范式全面迁移。ArkUI 框架以组件化、声明式、状态驱动为核心特征,要求开发者以"描述 UI 应该是什么样"而非"一步步操作 UI 怎么变"的思维方式构建界面。本文以一个名为"智能账单"的三标签页记账应用为切入点,逐层拆解其数据模型设计、@Builder 组件复用策略、@State 状态管理机制、条件渲染导航模式,以及静态写死渲染与动态循环渲染之间的性能权衡,为

2401_86031952的博客 178

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

幻次元 · 动漫追番社区基于HarmonyOS ArkTS API 24通过 interface 定义的色彩接口和 const 常量对象,并通过统一的引用方式在所有 UI 组件中保持视觉一致性

健身管理类应用与之前分析的外卖、招聘等应用有本质差异——它的核心数据不是"交易"或"任务",而是"时间序列的身体状态数据":每次训练有时长、卡路里、组数、重量;每次饮食有热量、蛋白质、碳水、脂肪;每周有运动时长趋势图。这些数据的共同特征是"随时间积累,用户需要横向对比和趋势分析"。这导致健身App的数据层设计必须从第一天就考虑"历史数据查询"和"多维度聚合"的需求,而非仅关注当前单条记录的增删改查。健身应用的用户行为模式也有独特之处:用户使用健身App的目标是"坚持",而不是"一次性完成任务"。这意味着激励

jin123322的博客 170

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

HarmonyOS 6.1 实战:通过indexOf方法查找ID在subIds数组中的位置,如果找到(返回值大于等于0),则返回true,否则返回false

鸿蒙操作系统(HarmonyOS)作为面向全场景的分布式操作系统,其核心设计理念是将不同设备的能力进行抽象与解耦,通过分布式软总线实现设备间的无缝协同。在车载场景下,鸿蒙系统不仅承担着传统车机娱乐系统的功能,更将智能驾驶辅助、车联网服务、座舱多屏互动等能力融为一体,构建了以"人-车-家"全场景智慧互联为核心的生态体系。从技术架构角度来看,鸿蒙车机系统采用了分层设计思想,从底层的微内核到上层的应用框架,每一层都经过了精心的优化与裁剪。微内核架构确保了系统的高安全性与高可靠性,这对于车载场景至关重要——车机系统

2401_86049470的博客 355

遗传算法第二讲:编码、适应度与算子的工程化设计

遗传算法(GA)作为经典启发式优化方法,其理论概念易懂,但实际落地常因编码失真、适应度失准、算子失配而失效。本质在于GA不是生物过程的模拟,而是搜索空间拓扑映射、进化驱动力校准与显式搜索策略编程的工程实践。格雷码编码保障邻域一致性,动态缩放适应度函数抑制早熟收敛,OX交叉与交换变异则针对排列约束保障可行性——这些关键设计直接决定算法能否从‘能跑’迈向‘稳收、优解、可复现’。本文聚焦工业级GA实现中不可绕过的三大决策链,覆盖TSP路径优化、超参搜索、函数最小化等典型场景,为工程师提供参数配置基线与避坑指南。

weixin_30521161的博客 464

快速入门到精通:一篇学会Oracle

Oracle全面的基础知识和知识点的举例,帮助初学者快速入门。 SQL语句,SQL查询,Oracle函数,代码块知识,条件判断/循环语句,索引、游标,锁,视图,存储过程,触发器,分区表,Oracle优化,建模

weixin_63021300的博客 4万+

Cross Apply 与 Inner Join 的对抗

Cross Apply 是 SQL Server 2005 新出的特性,微软给出的定义原文是这样: The MSDN definition is: “The APPLY operator is similar to the JOIN operator, but the difference is that the right-hand side operator of AP...

wujiandao的专栏 2056

野生菌电商行业HarmonyOS ArkTS API 24由于数据列表存储在组件@State 变量中,且通过数组的 splice、push 等方法进行修改,框架能够检测到数组引用的变化或数组内容的变更

在移动互联网与智能穿戴设备高度普及的今天,"习惯养成"已经从一个模糊的自我管理理念,演变为一个可量化、可追踪、可视化的数字化产品赛道。越来越多的人希望借助手中的智能终端,把"早起、冥想、阅读、运动"这些抽象的自律行为,转化为一条条清晰的数据曲线和一张张可触摸的打卡卡片。而鸿蒙生态(HarmonyOS)凭借其跨设备协同、分布式软总线以及声明式 UI 开发框架 ArkUI,为这类注重"轻量化交互 + 即时反馈"的生活方式类应用提供了极为理想的生长土壤。本应用正是一款面向"晨间场景"深度打磨的习惯追踪工具。它聚焦

jin421352的博客 226

数据结构-排序算法

排序就是将⼀个数据元素的任意序列,重新排列成⼀个按关键字有序的序列常见应用:购物筛选排序 院校排名。

2601_95781414的博客 167

C++ std::list 双向链表:原理、特性与实战应用指南

在数据结构中,链表是一种基础且重要的线性存储结构,它通过节点和指针实现元素的非连续存储。其核心原理在于每个节点包含数据域和指针域,通过指针链接形成逻辑上的序列。这种结构带来了显著的技术价值:在任意位置插入或删除元素的时间复杂度为 O(1),且迭代器在元素未被删除时具有稳定性,不会因容器结构调整而失效。这些特性使其在需要频繁进行中间位置增删操作的场景中极具优势,例如实现 LRU 缓存淘汰策略、维护实时更新的任务队列或玩家排行榜。本文将以 C++ 标准库中的 `std::list`(双向链表)为例,深入解析其内

weixin_33885676的博客 350

HarmonyOS 6效果实现:petBarW和petProteinW函数分别计算柱状图和蛋白质条的宽度百分比,通过Math.max确保最小宽度值,避免极小数值导致视觉不可见

随着宠物经济的蓬勃发展,宠物用品垂直电商应用已成为移动端重要的消费场景之一。在HarmonyOS 6.1.1平台上,ArkTS声明式UI框架凭借其强类型安全、组件化开发模式、高效的状态管理机制以及丰富的UI装饰器体系,为构建此类功能密集型的电商应用提供了坚实的技术基础。本应用以"宠物生活馆"为核心产品定位,采用得物风格的设计语言,通过暖橙色与奶油白的主题色彩搭配,营造出温馨可爱的视觉氛围,同时承载了从商品浏览、筛选、搜索到详情查看、购物管理、个人中心的完整电商业务闭环。在技术架构层面,应用采用了数据驱动的开

2501_92985087的博客 213

TOPSIS多属性决策算法:原理、MATLAB/Python实现与实战应用

多属性决策是管理科学和工程实践中常见的核心问题,旨在从多个备选方案中,依据多个相互冲突的评价标准,选出最优方案。其基本原理是通过数学模型将多维度的指标进行综合量化比较。TOPSIS(逼近理想解排序法)作为一种经典的多属性决策技术,通过计算每个方案与理想最优解和最劣解的相对距离来评估优劣,有效避免了传统加权平均法的失真问题。该技术的核心价值在于其直观性和稳健性,能够处理效益型和成本型指标混合的场景,为决策提供清晰的量化排序。在应用场景上,TOPSIS广泛应用于供应商评估、投资项目选择、绩效评价、资源分配等众多

weixin_33985507的博客 355
上一篇: listmap根据某字段进行合并
下一篇: 扩展若依@Excel注解,使其对字段的控制是否导出更加便捷
龙谷情Sinoam
博客等级 码龄10年 28粉丝 130原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值