題目回顧:從控制檯輸入字母,總計出現的字母次數
方法一:使用HashMap做
package Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
/**
* @Auther: Xinbai
* @Date:2020/5/21 14:11
*/
public class MapTest04 {
public static void main(String[] args) {
HashMap map = new HashMap();
//將用戶輸入的單詞存入args[] 中,其中args[i]表示索引爲 i 的單詞
for(int i = 0; i < args.length; i++){
//判斷這個單詞的鍵不存在,則直接放入Map中。
if(map.get(args[i]) == null){
map.put(args[i], new Integer(1)); //值爲1,注意不能直接寫原生數據類型1,而是應該用包裝類。
}
//否則,這個單詞存在,則將單詞key對應的value值取出加1再放入Map中。
else{
// map.put(args[i], new Integer(((Integer)map.get(args[i])).intValue() + 1)); 可讀性不好,分開寫
Integer in = (Integer)map.get(args[i]); //取出以前的值
Integer value = new Integer(in.intValue() + 1); //將這個值加 1
map.put(args[i], value);//將加1 後的值存入Map中
}
}
//使用迭代器輸出HashMap中的信息。
Set set = map.keySet();
for(Iterator iter = set.iterator(); iter.hasNext();){
String key = (String)iter.next();
Integer value = (Integer)map.get(key);
System.out.println(key + " : " + value);
}
}
}
Map.Entry
首先要了解Map的鍵值對,key—value。
來個例子:一一對應
package Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
/**
* @Auther: Xinbai
* @Date:2020/6/4 14:39
*/
public class MapEntry {
public static void main(String[] args) {
HashMap map = new HashMap();
map.put("張三", "小三");
map.put("李四", "小四");
map.put("王五", "小五");
map.put("新白","小白");
Set set = map.keySet();
for (Iterator iter = set.iterator(); iter.hasNext(); ) {
String key = (String) iter.next();
String value = (String) map.get(key);
System.out.println(key + "--" + value);
}
}
}
【注意】:Map.Entry表示Entry是Map內部類
內部類及實例內部類的寫法:
public class A{
public classB{
}
}
A a = new A();
A.B b = new A.B();
[說明:其實內部類很複雜,這邊只是大概一個概括,將來會有另起一講專門將內部類的使用方法]
看源碼:Map中關於Entry的:
修改一下上面的程序:
package Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
/**
* @Auther: Xinbai
* @Date:2020/6/4 14:39
*/
public class MapEntry {
public static void main(String[] args) {
HashMap map = new HashMap();
map.put("張三", "小三");
map.put("李四", "小四");
map.put("王五", "小五");
map.put("新白", "小白");
Set set = map.entrySet();
for (Iterator iter = set.iterator(); iter.hasNext(); ) {
//這邊要強制類型轉換,所以要知道其子類型,這邊可以知道其子類型爲Map.Entry類型
Map.Entry entry = (Map.Entry)iter.next();
String key = (String) entry.getKey();
String value = (String) entry.getValue();
System.out.println(key + "--" + value);
}
}
}
Map.Entry這個類型維護着一對信息,其中一個是key,一個是value(getKey() 和 getValue())