遍歷Map的兩種方法(有排序)

来源:http://www.cnblogs.com/shouce/archive/2016/04/05/5353685.html
-Advertisement-
Play Games

初始化一個map 1 2 3 4 5 Map<String, String> map = new HashMap<String, String>(); map.put("1", "hell"); map.put("2", "hello"); map.put("3", "hel"); map.put( ...


初始化一個map

1 2 3 4 5 Map<String, String> map = new HashMap<String, String>(); map.put("1""hell"); map.put("2""hello"); map.put("3""hel"); map.put("4""hello");

1、第一種方式,普遍使用

1 2 3 4 Set<String> keySet = map.keySet(); for (String key : keySet) {     System.out.println("key= " + key + " and value= " + map.get(key)); }

 2、第二種方式,容量大時推薦使用

1 2 3 4 5 Set<Map.Entry<String,String>> entySet =  map.entrySet(); for (Map.Entry<String, String> entry : entySet) {     System.out.println("key= " + entry.getKey() + " and value= "             + entry.getValue()); }

 實驗發現輸出的順序是亂的,排個序吧

1、按照key值排序

首先寫個排序類

1 2 3 4 5 6 7 private static class KeyComparator implements         Comparator<Map.Entry<String, String>> {     public int compare(Map.Entry<String, String> m,             Map.Entry<String, String> n) {         return m.getKey().compareTo(n.getKey());     } }

 把數據放在list裡邊才可以使用

1 2 3 4 5 6 7 8 9 List<Map.Entry<String, String>> list = new ArrayList<Map.Entry<String, String>>(); list.addAll(map.entrySet());   KeyComparator kc = new KeyComparator(); Collections.sort(list, kc); for (Iterator<Map.Entry<String, String>> it = list.iterator(); it         .hasNext();) {     System.out.println(it.next()); }

 2、按照Value值排序

1 2 3 4 5 6 7 private static class ValueComparator implements         Comparator<Map.Entry<String, String>> {     public int compare(Map.Entry<String, String> m,             Map.Entry<String, String> n) {         return m.getValue().compareTo(n.getValue());     } }

 排序輸出

1 2 3 4 5 6 7 8 list.clear(); list.addAll(map.entrySet()); ValueComparator vc = new ValueComparator(); Collections.sort(list, vc); for (Iterator<Map.Entry<String, String>> it = list.iterator();     it.hasNext();) {     System.out.println(it.next()); }

 

Tips: 如有錯誤請指出,我會及時修改


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 準備的文件 新建虛擬機 選擇新建一個空的虛擬機 選擇linux和centos 分配20G的硬碟空間 ' 修改配置 調整記憶體空間 橋接:虛擬機和真實機通訊使用的是真實機的網卡,要占用真是IP NAT:虛擬網卡VMnet8 HOST ONLY :VMnet1 只能和虛擬機通訊,不能上網 安裝CentOS ...
  • 在Linux中,主要編輯器為vi或者vim,本文圍繞vim做簡單的講解說明: Linux預設自帶vi(vim)編輯器,其程式包為: vim 編輯器模式切換: 命令模式 、命令行模式、編輯模式 命令模式: 字元操作 i 當前字元之前插入 I 行首插入 a 當前字元之後插入 A 行尾插入 esc 退出當 ...
  • PHP的語言規範: 1、php中的變數名區分大小寫,但是函數名,類名,方法名,不區分大小寫,但建議區分大小寫 2、php代碼必須書寫在(php標簽),開啟標記(<?php)中間不能空格 3、php代碼每一行以分號結束,最後一行可以省略分號。 4、如果一個Php文件是由純 php代碼組成,那麼php結... ...
  • i = 0def myFun(): global i i=i +1 return i myFun() accumulate( ) total = 0def accumulate(): global total total += 1 return total ...
  • oauth應該屬於security的一部分。關於oauth的的相關知識可以查看阮一峰的文章:http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html 一、目標 現在很多系統都支持第三方賬號密碼等登陸我們自己的系統,例如:我們經常會看到,一些系統使用微 ...
  • 最近遇到的問題小結: 1.django 工程內不要有與項目名稱相同的文件。會導致無法import settings.py文件。 2.django 的 csrf 問題,當發送post請求時,會要求同時發送csrf token,是為了防止跨站請求偽造。 具體使用方法見官方文檔。 http://docs. ...
  • 介紹 我發現了一個問題,今天與大家分享。我把整個過程描述一下。 問題 問題 公司有個框架是基於smarty寫的,我負責php的升級,維護人員把新環境布上來之後,測試人員找我提出經常報錯(錯誤:提示找不到文件的)。 我追蹤了一下代碼,原來是smarty的這個地方報的錯誤。 錯誤:這裡報出文件不存在。 ...
  • 開篇導讀 “養成良好的編程習慣”其實是相當綜合的一個命題,可以從多個角度、維度和層次進行論述和評判。如代碼的風格、效率和可讀性;模塊設計的靈活性、可擴展性和耦合度等等。要試圖把所有方面都闡述清楚必須花很多的精力,而且也不一定能闡述得全面。因此,本系列文章以軟體開發的基礎問題為切入點,闡述程式設計和代 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...