javamapfor循環
『壹』 java循環遍歷Map的幾種方法
第一種用for循環
Java代碼
for(Map.Entry<String, String> entry:map.entrySet()){
System.out.println(entry.getKey()+"--->"+entry.getValue());
}
第二種用迭代
Java代碼
Set set = map.entrySet();
Iterator i = set.iterator();
while(i.hasNext()){
Map.Entry<String, String> entry1=(Map.Entry<String, String>)i.next();
System.out.println(entry1.getKey()+"=="+entry1.getValue());
}
用keySet()迭代
Java代碼
Iterator it=map.keySet().iterator();
while(it.hasNext()){
String key;
String value;
key=it.next().toString();
value=map.get(key);
System.out.println(key+"--"+value);
}
用entrySet()迭代
Java代碼
Iterator it=map.entrySet().iterator();
System.out.println( map.entrySet().size());
String key;
String value;
while(it.hasNext()){
Map.Entry entry = (Map.Entry)it.next();
key=entry.getKey().toString();
value=entry.getValue().toString();
System.out.println(key+"===="+value);
}
『貳』 java怎樣循環往map中存值
Mapmap=newHashMap();
Iteratorit=map.keySet().iterator();
Objectkey;
Objectvalue;
while(it.hasNext()){
key=it.next();
value=map.get(key);
System.out.println(key+":"+value);
}
用keySet得到map 鍵的set集合 然後用這個集合去迭代
『叄』 java Map 怎麼遍歷
關於java中遍歷map具體有四種方式,請看下文詳解。
1、這是最常見的並且在大多數情況下也是最可取的遍歷方式,在鍵值都需要時使用。
Map<Integer, Integer> map = newHashMap<Integer, Integer>();
for(Map.Entry<Integer, Integer> entry : map.entrySet()) {
System.out.println("Key = "+ entry.getKey() + ", Value = "+ entry.getValue());
}
2、在for-each循環中遍歷keys或values。
如果只需要map中的鍵或者值,你可以通過keySet或values來實現遍歷,而不是用entrySet。
Map<Integer, Integer> map = newHashMap<Integer, Integer>();
for(Integer key : map.keySet()) {
System.out.println("Key = "+ key);
}
for(Integer value : map.values()) {
System.out.println("Value = "+ value);
}
該方法比entrySet遍歷在性能上稍好(快了10%),而且代碼更加干凈。
3、使用Iterator遍歷
使用泛型:
Map<Integer, Integer> map = newHashMap<Integer, Integer>();
Iterator<Map.Entry<Integer, Integer>> entries = map.entrySet().iterator();
while(entries.hasNext()) {
Map.Entry<Integer, Integer> entry = entries.next();
System.out.println("Key = "+ entry.getKey() + ", Value = "+ entry.getValue());
}
不使用泛型:
Map map = newHashMap();
Iterator entries = map.entrySet().iterator();
while(entries.hasNext()) {
Map.Entry entry = (Map.Entry) entries.next();
Integer key = (Integer)entry.getKey();
Integer value = (Integer)entry.getValue();
System.out.println("Key = "+ key + ", Value = "+ value);
}
4、通過鍵找值遍歷(效率低)
Map<Integer, Integer> map = newHashMap<Integer, Integer>();
for(Integer key : map.keySet()) {
Integer value = map.get(key);
System.out.println("Key = "+ key + ", Value = "+ value);
}
假設Map中的鍵值對為1=>11,2=>22,3=>33,現用方法1來遍歷Map代碼和調試結果如下:
(3)javamapfor循環擴展閱讀:
1、HashMap的重要參數
HashMap 的實例有兩個參數影響其性能:初始容量 和載入因子。容量是哈希表中桶的數量,初始容量只是哈希表在創建時的容量。
載入因子 是哈希表在其容量自動增加之前可以達到多滿的一種尺度。當哈希表中的條目數超出了載入因子與當前容量的乘積時,則要對該哈希表進行 rehash 操作(即重建內部數據結構),從而哈希表將具有大約兩倍的桶數。
在Java編程語言中,載入因子默認值為0.75,默認哈希表元為101。
2、HashMap的同步機制
注意,此實現不是同步的。 如果多個線程同時訪問一個哈希映射,而其中至少一個線程從結構上修改了該映射,則它必須保持外部同步。
(結構上的修改是指添加或刪除一個或多個映射關系的任何操作;以防止對映射進行意外的非同步訪問,如下:
Map m = Collections.synchronizedMap(new HashMap(...));
『肆』 java中的for循環
迭代器遍歷的簡單寫法,是一個加強型的for循環
for(String str : strFile)-->for(int i=0;i<strFile.length;i=+){ String str = strFile[i];}
for(Class obj: List<Class>)
『伍』 Java的HashMap與for-each循環共用
這樣的寫法是沒有問題,肯定是別的地方的問題
import java.util.HashMap;
public class MapKeysetTest{
public static void main(String args[]){
HashMap<String, String> map = new HashMap<String, String>();
map.put("a", "aa");
map.put("b", "bb");
map.put("c", "cc");
for(String s:map.keySet()){
System.out.println(s);
}
}
}
這樣是能正確打開出來 a\b\c的
『陸』 工作中你是如何用Java 遍歷 Map的呢
在java中遍歷Map有不少的方法。我們看一下最常用的方法及其優缺點。
既然java中的所有map都實現了Map介面,以下方法適用於任何map實現(HashMap, TreeMap, LinkedHashMap, Hashtable, 等等)
方法一、 在for-each循環中使用entries來遍歷
這是最常見的並且在大多數情況下也是最可取的遍歷方式。在鍵值都需要時使用。
作為方法一的替代,這個代碼看上去更加干凈;但實際上它相當慢且無效率。因為從鍵取值是耗時的操作(與方法一相比,在不同的Map實現中該方法慢了20%~200%)。如果你安裝了FindBugs,它會做出檢查並警告你關於哪些是低效率的遍歷。所以盡量避免使用。
總結
如果僅需要鍵(keys)或值(values)使用方法二。如果你使用的語言版本低於java 5,或是打算在遍歷時刪除entries,必須使用方法三。否則使用方法一(鍵值都要)。
『柒』 java語言如何循環讀取Map對象內的數據
Set<Object> keySet = map.keySet();//獲取map的key值的集合,set集合
for(Object obj:keySet){//遍歷key
System.out.println("key:"+obj+",Value:"+map.get(obj));//輸出鍵與值
}
『捌』 java map 用for循環的問題
親,你要搞清楚。集合類的foreach只能用來遍歷,不能進行修改操作的。即不能修改、刪除、添加元素。
只能遍歷。如果進行了修改操作的話。會拋出java.util.異常
,表示你不同在遍歷的同時,又進行修改。
如果你非得,要做修改操作。請選擇正常的for循環。以List為例。
List<String>list=newArrayList();
for(inti=0;i<10;i++){
list.add(i+"");
}
System.out.println(list.size());//10
for(inti=0;i<list.size();i++){
if(list.get(i).equals("1")){
list.remove(list.get(i));
}
}
System.out.println(list.size());//9
『玖』 java 關於Map 的兩個for循環的區別是什麼
//這里是調用Map的entrySet方法迭代出Map中的Entry對象,
//這里Entry對象中其實也是存放的為Key-->Value格式的鍵值對,其有getKey和getValue方法分別可以取其Key值和Value值
//Entry中的Key--Value鍵值對和Map中的每一個鍵值對相對應
//返回映射中包含的映射關系的Set視圖。也是一個Set,而Set中每個元素是內部類Map.Entry。
for (Map.Entry<Integer, String> entry : lhmap.entrySet()) {
System.out.println(entry.getKey() + ":" + entry.getValue() + "\t");
}
//這里使用迭代器首先迭代出Map的所有Key值,返回映射中包含的鍵的Set視圖。 是key的Set集合
//根據Key值取出Map中的Value值
for (Iterator<Integer> it = lhmap.keySet().iterator(); it.hasNext();) {
Object key = it.next();
System.out.println(key + "=" + lhmap.get(key));
}
//你可以給Map中存N多個數據,然後用上面的方法測試下性能,你回發現entrySet方法比keySet效率會高很多
有不明白的地方 請追問。
『拾』 Java學生信息表,Map存儲對象,Map使用泛型和增強for循環來做
1、首先定義學生類 ,這里只定義年齡和它的設置、獲取方法,其他屬性自己補充。
Class Student{
private int age;
private int getAge(){
return this.age;
}
private void setAge(int age){
this.age = age;
}
2、然後定義TestMain類,
Class TestMain{
public static void main(String args【】){
//這里,後續的步驟里的代碼都寫在這里。
}
}}
3.然後定義Map 以及獲取輸入的邏輯,這里只寫了部分內容,其他內容自己補充,形式是一樣的,類型注意下:
Map< Integer, Student> myMap = new Map<Integer, Student>();//這里用了泛型注意,不懂自己網路下泛型。
Scanner sc = new Scanner(System.in);
System.out.println("請輸入你的姓名:");
String name = sc.nextLine();
System.out.println("請輸入你的年齡:");
int age = sc.nextInt();
4、創建對象並賦值,然後把對象存入map中:
Student zhangsan = new Student();
zhangsan.age = age;
zhangsan.name = name;
myMap.put(zhangsan.number,zhangsan);//注意這里的zhangsan.number是他的學號,我前面沒有定義,需要你自己補充定義和補充賦值。
5、看來你已經做完了,不需要 我繼續回答了。