java根據集合中對象的屬性值大小生成排名

?1:根據對象屬性降序排列

  public static <T extends Comparable<? super T>> LinkedHashMap<T, Integer> calculateRanking(List<ProductPerformanceInfoVO> dataList, Function<ProductPerformanceInfoVO, T> keyExtractor) {LinkedHashMap<T, Integer> rankingMap = new LinkedHashMap<>();List<T> distinctKeys = dataList.stream().map(keyExtractor).distinct().sorted(Comparator.reverseOrder()).collect(Collectors.toList());for (int i = 0; i < distinctKeys.size(); i++) {rankingMap.put(distinctKeys.get(i), i + 1);}return rankingMap;}

2:根據對象屬性升序排列
?

public static <T extends Comparable<? super T>> LinkedHashMap<T, Integer> calculateRanking(List<ProductPerformanceInfoVO> dataList, Function<ProductPerformanceInfoVO, T> keyExtractor) {LinkedHashMap<T, Integer> rankingMap = new LinkedHashMap<>();List<T> distinctKeys = dataList.stream().map(keyExtractor).distinct().sorted().collect(Collectors.toList());for (int i = 0; i < distinctKeys.size(); i++) {rankingMap.put(distinctKeys.get(i), i + 1);}return rankingMap;}

?3:方法調用

LinkedHashMap<BigDecimal, Integer> rankingMap = EntityConvertUtil.calculateRanking(returnDataList, ProductPerformanceInfoVO::getSalesVolume);

4:說明

方法添加泛型約束 <T extends Comparable<? super T>>,確保 T 可以進行自然排序(如 Integer, String 等)。如果 T 是自定義類型且未實現 Comparable,則需提供顯式 Comparator;

5:示例場景:

假設 keyExtractor 提取的是 Integer 類型的值,原始數據為 [3, 1, 4, 1, 5]

  • 升序:排序后的鍵為?[1, 3, 4, 5],排名為?{1=1, 3=2, 4=3, 5=4}
  • 降序:排序后的鍵為?[5, 4, 3, 1],排名為?{5=1, 4=2, 3=3, 1=4}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/75796.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/75796.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/75796.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

grep命令: 過濾

[rootxxx ~]# grep root /etc/passwd [rootxxx ~]# grep -A 2 root /etc/passwd -A #匹配行后兩行 [rootxxx ~]# grep -B 2 root /etc/passwd -B #匹配行前兩行 [rootxxx ~]# grep -C 2 root /etc/passwd -C #前后2行 [rootxxx ~]# grep -n root /…

二十種中藥果實識別分類系統,Python/resnet18/pytorch

二十種中藥果實識別分類系統,Python/resnet18/pytorch 基于pytorch訓練, resnet18網絡&#xff0c;可用于訓練其他分類問題&#xff0c;也可自己重新訓練 20類中藥材具體包括&#xff1a;(1) 補骨脂&#xff0c;(2) 草豆蔻&#xff0c;(3) 川楝子&#xff0c;(4) 地膚子&…

SpringBoot啟動run方法分析

SpringBoot啟動run方法分析 1.場景引入 在項目啟動的時候&#xff0c;有時候我們需要在啟動的時候&#xff0c;執行一些邏輯。 比如說&#xff0c;項目啟動的時候&#xff0c;我想把一些熱門商品的數據加載到緩存中去&#xff1b; 比如說&#xff0c;自定義了一個netty服務…

Linux信號——信號的處理(3)

信號是什么時候被處理&#xff1f; 進程從內核態&#xff0c;切換到用戶態的時候&#xff0c;信號會被檢測處理。 內核態&#xff1a;操作系統的狀態&#xff0c;權限級別高 用戶態&#xff1a;你自己的狀態 內核態和用戶態 進程地址空間第三次 所謂的系統調用本質其實是一堆…

MySQL篇(四)事務相關知識詳解

MySQL篇(四&#xff09;事務相關知識詳解 MySQL篇(四&#xff09;事務相關知識詳解一、事務的特性&#xff08;ACID&#xff09;原子性&#xff08;Atomicity&#xff09;一致性&#xff08;Consistency&#xff09;隔離性&#xff08;Isolation&#xff09;持久性&#xff08;…

SpringBoot定時任務深度優化指南

精心整理了最新的面試資料和簡歷模板&#xff0c;有需要的可以自行獲取 點擊前往百度網盤獲取 點擊前往夸克網盤獲取 SpringBoot定時任務深度優化指南 引言 在分布式系統架構中&#xff0c;定時任務是實現業務邏輯自動化的重要組件。SpringBoot通過Scheduled注解提供了便捷的…

MySQL表結構導出(Excel)

目錄 一、java實現MySQL表結構導出&#xff08;Excel&#xff09; 二、python實現MySQL表結構導出&#xff08;Excel&#xff09; 又到了寫畢設的時候了&#xff0c;計算機專業在寫論文第四章系統設計的時候肯定會遇到和我一樣的難題——要在論文中將數據庫的表結構以表格形式…

Android使用OpenGL和MediaCodec渲染視頻

目錄 一&#xff0c;借助MediaCodec封裝解碼工具類VideoCodec 二&#xff0c;使用OpenGl繪制視頻封裝SoulFilter 一&#xff0c;借助MediaCodec封裝解碼工具類VideoCodec /*** 解碼工具類* 解碼完成后的數據 通過 ISurface 回調出去*/ public class VideoCodec {private ISu…

day39——輸入操作:多值輸入

數組輸入&#xff1a; int main() {//***** 1、多值輸入&#xff08;C&#xff09;/*輸入&#xff1a;3 --> 3個值5 4 9*/int n;cin >> n; //輸入個數const int MAX_SIZE 0xFFFF;//限定最大個數int a[MAX_SIZE];for (int i 0; i < n; i) {//用 n 作控制輸入…

第九課:LoRA模型的原理及應用

文章目錄 Part.01 3種LoRA的使用方式Part.02 5種LoRA的應用方向Part.01 3種LoRA的使用方式 LoRA能夠在家用級設備上訓練,實現對Checkpoint在某些方面的微調使用Lora的三種方式:放置Lora模型到目錄中,然后作為提示詞的一部分輸入。點擊生成按鈕下面的“畫”,然后打開Additio…

Cortex-M3 NVIC可以控制異常向量表的哪些部分

Cortex-M3 的 NVIC(嵌套向量中斷控制器)不直接控制整個異常向量表,但可以管理向量表中與中斷相關的部分行為。以下是 NVIC 對異常向量表的具體控制范圍和相關機制: 1. NVIC 直接控制的部分 NVIC 主要管理 外部中斷(IRQ) 和部分 系統異常 的行為,但對向量表本身的存儲位…

雙向鏈表增刪改查的模擬實現

本章目標 0.雙向鏈表的基本結構 1.雙向鏈表的初始化 2.頭插尾插 3.頭刪尾刪 4.查找與打印 5.在指定位置之前插入數據/在指定位置之后插入數據 6.在指定位置之前刪除數據/在指定位置之后刪除數據 7.銷毀鏈表 0.雙向鏈表的基本結構 本章所實現的雙向鏈表是雙向循環帶頭鏈表,是…

實戰交易策略 篇十四:江南神鷹捕捉熱點和熊市生存交易策略

文章目錄 系列文章捕捉熱點是股市最大的掘金術市場溫度不低于50是熱點產生的必要條件題材的大小和新穎程度決定熱點的持續時間和漲幅炒作熱點的3個階段捕捉熱點的方法與步驟操作實戰案例熊市生存術“熊市最好的做法是離開股市”的說法是一句空話熊市盈利模式:不輕言底部,超跌…

Linux錯誤(6)X64向量指令訪問地址未對齊引起SIGSEGV

Linux錯誤(6)X64向量指令訪問地址未對齊引起SIGSEGV Author: Once Day Date: 2025年4月4日 一位熱衷于Linux學習和開發的菜鳥&#xff0c;試圖譜寫一場冒險之旅&#xff0c;也許終點只是一場白日夢… 漫漫長路&#xff0c;有人對你微笑過嘛… 全系列文章可參考專欄: Linux實…

解碼 __iter__ 和 itertools.islice - 迭代的藝術

文章目錄 前言一、`_iter__`:自定義迭代的鑰匙1.1 什么是 __iter__?1.2 基本用法1.3 高級用法:獨立迭代器二、itertools.islice:迭代切片的利器2.1 什么是 itertools.islice?2.2 基本用法2.3 處理無限序列2.4 實際應用三、`__iter__` 與 `islice` 的結合六、為什么需要它們…

使用VSCode編寫C#程序

目錄 一、環境搭建&#xff1a;構建高效開發基礎1. 安裝VSCode2. 配置.NET SDK3. 安裝核心擴展 二、項目開發全流程1. 創建項目2. 代碼編輯技巧3. 調試配置4. 高級調試技巧5. 編譯與運行 三、常見問題解決指南1. 項目加載失敗2. IntelliSense失效3. 代碼格式化4. 典型編譯錯誤&…

日本汽車規模性經濟計劃失敗,日產三大品牌的合并合作共贏,還是絕地求生?本田與日產合并確認失敗,將成為世界第三大汽車集團愿景失敗

本田與日產(含三菱汽車)的合并計劃最終因核心矛盾無法調和而宣告失敗,這一事件揭示了傳統車企在行業變革期的深層困境。以下從合并動機、失敗原因、本質判斷及未來影響等方面綜合分析: 一、合并的初衷:生存壓力主導的被動策略 市場危機與財務困境 中國市場潰敗:日系品牌在…

AutoCAD2026中文版下載安裝教程

AutoCAD是一款由Autodesk公司開發的計算機輔助設計軟件&#xff0c;被廣泛應用于建筑設計、機械設計、電氣設計、土木工程、裝飾裝潢等多個領域。AutoCAD2026中文版在原有的基礎上進行了多項改進和優化&#xff0c;為用戶提供了更為高效、便捷的繪圖和設計體驗。這里我給大家分…

Latex語法入門之數學公式

Latex是一種高質量的排版系統&#xff0c;尤其擅長于數學公式的排版。本文我將帶大家深入了解Latex在數學公式排版中的應用。從基礎的數學符號到復雜的公式布局&#xff0c;我們都會一一講解&#xff0c;通過本文的學習&#xff0c;你將能夠輕松編寫出清晰、美觀的數學公式&…

洛谷 P3214 [HNOI2011] 卡農

題目傳送門 前言 再次敗在 d p dp dp 手下&#xff0c;但是數據范圍這么小應該是可以看出是 d p dp dp 的&#xff08;畢竟對于其他組合數的問題數據范圍都是 1 0 9 10^9 109 起步&#xff09;。 思路 題意簡化 現有 1 , 2 , 3 , . . . , n ? 1 , n 1, 2, 3, ... , n -…