Map集合案例
/*
"aababcabcdabcde",获取键盘录入字符串中每一个字母出现的次数
要求结果:a(5)b(4)c(3)d(2)e(1)
1、键盘录入一个字符串
2、使用TreeMap集合对象
键:Character
值:Integer
3、将字符串转换从字符数组
4、遍历字符数组获取每一个字符
5、拿着获取到的字符去集合中键去找,看看有没有这个键
如果没有,就把这个字符当作key,value值为1进行存储
如果有,就把该字符对应的值+1,重新存储到集合中
6、定义一个StringBuffer作为拼接
7、遍历集合,得到键和值,按照指定的输出对进行拼接a(5)b(4)c(3)d(2)e(1)
8、将StringBuffer转换成字符串输出
*/
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;
public class MapTest1 {
public static void main(String[] args) {
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个纯英语的字符串:");
String s = sc.next();
//创建TreeMap集合对象
TreeMap<Character, Integer> map = new TreeMap<>();
//将字符串转换从字符数组
char[] chars = s.toCharArray();
//遍历字符数组获取每一个字符
for (char c : chars) {
//拿着获取到的字符当成键去集合中找对应的值,看看有没有
Integer value = map.get(c);
if (value == null) {
map.put(c, 1);
} else {
value++;
map.put(c, value);
}
}
//定义一个StringBuffer作为拼接
StringBuffer sb = new StringBuffer();
//遍历集合得到每一个键和值
Set<Map.Entry<Character, Integer>> entries = map.entrySet();
for (Map.Entry<Character, Integer> entry : entries) {
Character key = entry.getKey();
Integer value = entry.getValue();
sb.append(key).append("(").append(value).append(")");
}
//将StringBuffer转换成字符串输出
String string = sb.toString();
System.out.println("计算每个字符的个数为:" + string);
}
}
面试题
import java.util.HashMap;
import java.util.Hashtable;
/*
HashMap与Hashtable的区别(面试题)
1、HashMap中的key和value允许为null值,而Hashtable不允许
2、Hashtable是线程安全的,HashMap是线程不安全的
*/
public class HashMapAndHashtableDemo {
public static void main(String[] args) {
HashMap<String, String> map1 = new HashMap<>();
map1.put(null, null);
System.out.println(map1);
Hashtable<String, String> map2 = new Hashtable<>();
//NullPointerException
// map2.put(null, null);
System.out.println(map2);
}
}