Java——集合(Map集合的兩種迭代)

一,Map集合的第一種迭代

Map集合的第一種迭代,通過get(key)方法,根據鍵去獲取值
package com.wsq.map;import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;public class Demo2_Iterator {
/*** 通過查看Map集合的API發現沒有Iterator方法,那么雙列集合如何迭代呢?* Map集合的第一種迭代形式* 迭代==遍歷* */public static void main(String[] args) {Map<String, Integer> map = new HashMap<>();//雙列集合,鍵是String類型,值是Integer類型map.put("張三", 23);map.put("李四", 24);map.put("王五", 25);map.put("趙六", 26);/*//根據鍵,去獲取值  Integer wsq = map.get("張三");                //獲取map雙列集合中的鍵System.out.println(wsq);                    //打印輸出map雙列結合中的值*//** ①雙列集合的第一種遍歷形式,通過迭代器進行遍歷//獲取所有鍵Set<String> keySet = map.keySet();                  //map.keySet():獲取所有的鍵的集合,鍵是String類型Iterator<String> it = keySet.iterator();            //獲取迭代器 itwhile(it.hasNext()){                                //判斷集合中是否有元素;iterator():如果迭代器具有多個元素,則返回 trueString key = it.next();                         //獲取每一個鍵,鍵是String類型;next():返回迭代的下一個元素。Integer value = map.get(key);                   //根據鍵獲取值,值是Integer類型;get(key):指定鍵所映射的值;如果此映射不包含該鍵的映射關系,則返回 null System.out.println(key + "="  + value );        //打印鍵和值}*//*//②雙列集合的第二種遍歷形式,使用增強for循環遍歷 for (String key : map.keySet()) {                   //for(臨時變量,也就是想要獲取的變量,這里是想要通過鍵去獲取值,String key 表示的是每一個鍵:容器的名字,這里是 map.ketSet())   map.ketSet()是所有鍵的集合,拿到所有的鍵System.out.println(key + "=" + map.get(key));   //增強for循環迭代雙列集合第一種方式}*/}}

二,Map集合的第二種迭代

Map集合的第二種迭代,根據鍵值對對象(也就是把鍵值對當成一個對象),獲取鍵和值
也就是把雙列集合的鍵值對,變成單列集合的鍵值對對象,然后遍歷這個集合,獲取每一個鍵值對對象,根據鍵值對對象獲取鍵和值

解釋一下Map.Entry

package com.wsq.map;public class Demo4_MapEntry {public static void main(String[] args) {}}interface Inter{interface Inter2{public void show();}
}class wsq implements Inter.Inter2{//這里的wsq類想繼承Inter2,當出現Inter.Inter2,也就是說,Inter2是Inter的內部接口//同樣的道理,Map.Entry,也就是說,Entry是Map里面的一個內部接口@Overridepublic void show() {          //實現接口要重寫人家里面的抽象方法}}
package com.wsq.map;import java.security.KeyStore.Entry;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;public class Demo3_Iterator {/*** Map集合的第二種迭代,根據鍵值對對象,獲取鍵和值*  A:鍵值對對象找鍵和值思路*      * 獲取所以鍵值對對象的集合*      * 遍歷鍵值對對象的集合,獲取到每一個鍵值對對象*      * 根據鍵值對對象找鍵和值* */public static void main(String[] args) {Map<String, Integer> map = new HashMap<>();map.put("張三", 23);map.put("李四", 24);map.put("王五", 25);map.put("趙六", 26);/*//①通過迭代器去遍歷Set<Map.Entry<String, Integer>> entrySet = map.entrySet();      //Map.Entry說明Entry是Map的內部接口,將鍵和值封裝成了Entry對象,并存儲在Set集合中;遍歷雙列集合里面存儲的都是Entry對象,所以通過迭代器迭代的應該也是Entry對象Iterator<Map.Entry<String, Integer>> it = entrySet.iterator();  //通過迭代器去獲取每一個對象,<Map.Entry<String, Integer>>泛型的迭代應該一致while(it.hasNext()){                                            //hasNext():如果迭代器具有多個元素,則返回 true;通過循環開始獲取每一個Entry對象Map.Entry<String, Integer> wsq = it.next();                 //①父類引用指向子類對象;這里的wsq就代表每一個Entry對象//Entry<String, Integer> wsq = it.next();                     //②直接獲取的是子類對象String key = wsq.getKey();                                  //Set<Map.Entry<K,V>>下有個getKey():返回與此項對應的鍵;根據鍵值對對象獲取對應的鍵Integer value = wsq.getValue();                             //Set<Map.Entry<K,V>>下有個getValue():返回與此項對應的值;根據鍵值對對象獲取對應的值System.out.println(key + "=" + value);}*//*//②通過增強for循環遍歷 for (Map.Entry<String, Integer> wsq : map.entrySet()) {         //for(定義一個臨時變量的數據類型跟Entry對象的數據類型一致也就是Map.Entry<String, Integer> wsq代表每一個鍵值對象 :  )System.out.println(wsq.getKey() + "=" + wsq.getValue());    //通過鍵值對象來獲取它里面的getKey()和getValue();getKey():返回與此項對應的鍵   getValue():返回與此項對應的值}*/}}

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

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

相關文章

如何使用兩個堆棧實現隊列_使用兩個隊列實現堆棧

如何使用兩個堆棧實現隊列Stack and Queue at a glance... 堆疊和排隊一目了然... Stack: 堆棧&#xff1a; The stack is an ordered list where insertion and deletion are done from the same end, top. The last element that entered first is the first one to be del…

接口pk抽象類

作為開發者&#xff0c;誰從來沒有陷入過周而復始地爭論應該是使用接口還是抽象類&#xff1f;這是一場永無休止的爭論&#xff0c;不同陣營的人總是堅定地堅持自己的立場。應當使用接口還是抽象類&#xff1f;對于初學者來說那更是滿頭霧水。這個問題應該考慮一下幾個因素&…

匯編shr命令

右移命令 比如&#xff1a; mov eax,10 shr eax,0x2上面的命令是將eax的值右移兩位&#xff0c;怎么左移呢&#xff1f;首先將eax的值轉為二進制10------》1010&#xff0c;然后右移兩位變成10&#xff0c;所以執行為shr命令&#xff0c;eax的值為十進制的2

iBatis入門和開發環境搭建

iBatis 的優缺點&#xff1a; 優點&#xff1a; 1、 減少代碼量&#xff0c;簡單&#xff1b; 2、 性能增強&#xff1b; 3、 Sql 語句與程序代碼分離&#xff1b; 4、 增強了移植性&#xff1b; 缺點&#xff1a; 1、 和Hibernate 相比&#xff0c;sql 需要自己寫&#x…

Python | 程序以字符串長度打印單詞

Given a string and we have to split the string into words and also print the length of the each word in Python. 給定一個字符串&#xff0c;我們必須將字符串拆分為單詞&#xff0c;并在Python中打印每個單詞的長度。 Example: 例&#xff1a; Input:str "Hell…

Java——遞歸練習

#練習一&#xff1a;從鍵盤接收一個文件夾路徑&#xff0c;統計該文件夾大小 ###分析&#xff1a; ####每句話相當與每一個要求&#xff0c;每一個要求用一個方法去實現 第一個方法 * getDir()* 第一個要求&#xff1a;從鍵盤接收一個文件夾路徑* 1&#xff0c;創建鍵盤錄入對…

C# 里怎樣得到當前執行的函數名,當前代碼行,源代碼文件名。

得到函數名&#xff1a; System.Diagnostics.StackTrace st new System.Diagnostics.StackTrace(); this.Text st.GetFrame(0).ToString(); 得到代碼行&#xff0c;源代碼文件名&#xff1a; StackTrace st new StackTrace(new StackFrame(true)); Console…

PHP中單引號和雙引號的區別

0x01 單引號 單引號里面的內容不會被解釋&#xff0c;不管什么內容&#xff0c;都當做字符串處理 <?php$abc1234; $stradc$abc; echo $str;輸出 0x02 雙引號 雙引號里面的內容會被解釋&#xff0c;像一些換行&#xff08;\n)、數據元素等都會被解釋 <?php$abc1234;…

Eclipse 代碼提示無效的解決方法

代碼提示一般有兩種形勢1、點提示無效經常打一個點就能調出該對象可選的方法列表。哪天不靈了&#xff0c;可以這樣解決&#xff1a;window->Preferences->Java->Editor->Content Assist->Advanced 上面的選項卡Select the proposal kinds contained in the de…

getdate 日期間隔_日期getDate()方法以及JavaScript中的示例

getdate 日期間隔JavaScript Date getDate()方法 (JavaScript Date getDate() method) getDate() method is a Dates class method and it is used to get the current day of the month. getDate()方法是Date的類方法&#xff0c;用于獲取當月的當前日期。 It accepts nothin…

關閉頁面時執行“退出”的解決方案

在有些應用中我們需要實時的更新站點用戶是否在線的狀態。比如一些論壇里的在線成員實時顯示&#xff0c;或基于網頁的聊天、會議系統等。這種情況下&#xff0c;如果用戶點擊“退出”按鈕或鏈接&#xff0c;我們將之行一系列后臺操作&#xff0c;將該用戶標識成off line狀態&a…

Java——多線程實現的三種方式

創建新執行線程有三種方法。 第一種方法是將類聲明為 Thread 的子類。該子類應重寫 Thread 類的 run 方法。接下來可以分配并啟動該子類的實例。 例如&#xff0c;計算大于某一規定值的質數的線程可以寫成&#xff1a; class PrimeThread extends Thread {long minPrime;Pri…

python網絡編程---TCP客戶端

0x01 環境 python2、 pycharm 0x02 程序 # -*- coding:UTF-8 -*- import sockettarget_hostwww.baidu.com tarfet_port80target_hostlocalhost target_port3345 dataABCDEF# 創建一個socket對象 client socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 連接客戶端 clien…

c#枚舉數字轉枚舉_C#枚舉能力問題和解答 套裝4

c#枚舉數字轉枚舉1) What is the correct output of given code snippets in C#.NET? using System;class program{enum emp_salary : int{emp1 10000,emp2 15000,emp4 20000}static void Main(string[] args){int sal (int)emp_salary.emp2;Console.WriteLine(sal);}}100…

Java——匿名內部類實現線程的兩種方式

package com.yy.thread;public class Demo4_Thread {public static void main(String[] args) {demo1(); //匿名內部類&#xff0c;第一種&#xff0c;繼承Threaddemo2(); //匿名內部類&#xff0c;第二種&#xff0c;實現Runnable接口 }private static void…

zlib1.2.5的編譯

zlib1.2.5沒有了1.2.4的vc6工程&#xff0c;只好使用命令行編譯。通過win32/Makefile.msc發現有4種編譯方式&#xff0c;如下&#xff1a;# Usage:# nmake -f win32/Makefile.msc (standard build)# nmake -f win32/Makefile.msc LOC-DFOO …

python網絡編程--UDP客戶端

0x01 環境 python、pycharm 0x02 程序 # -*- coding:utf-8 -*-import sockettarget_host127.0.0.1 target_part80#創建一個socket對象 client socket.socket(socket.AF_INET,socket.SOCK_DGRAM)#發送一些數據 client.sendto(AAAAAA,(target_host,target_part))#接收到的消息 …

window.open參數和技巧

【1、最基本的彈出窗口代碼】 <SCRIPT LANGUAGE"javascript"> <!-- window.open (page.html) --> </SCRIPT> 因為著是一段javascripts代碼&#xff0c;所以它們應該放在<SCRIPT LANGUAGE"javascript">標簽和</script>之間。…

java jar包示例_Java包getImplementationTitle()方法和示例

java jar包示例包類的getImplementationTitle()方法 (Package Class getImplementationTitle() method) getImplementationTitle() method is available in java.lang package. getImplementationTitle()方法在java.lang包中可用。 getImplementationTitle() method is used to…

Java——獲取和設置多線程的名稱

給名字進行賦值有兩種方式&#xff1a; 1&#xff0c;通過構造去賦值 Thread(String name) 直接在構造方法里面傳一個名字就行了2&#xff0c;通過set設置的方法進行賦值 package com.yy.threadmethod;public class Demo1_Name {public static void main(String[] args) {dem…