题目回顾:从控制台输入字母,总计出现的字母次数
方法一:使用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())