前言
Map集合与Collection*集合处于通移梯度,Map集合里面都是键值对
一、Map集合里有几个类,他们有什么区别?
Map集合分为HashTable和HashMap,这两个类方式都一样,他们的区别在与HashTable 线程安全,效率低。HashMap 线程不安全,效率高
二、Map集合的特点?
1.键与值对应(互相绑定)
2.键不能重复
三、Map集合的一些方法应用
1.添加元素,获取元素,删除元素,替换元素
Map<String, String> ms=new HashMap<String, String>();
// 添加元素 对应的方法-- put() 会存在两种情况
// 1.不存在对应的键,做 添加操作
// 2.如果键存在,做替换操作
ms.put("JP", "Japan");
ms.put("CN", "Chine");
ms.put("DE", "Germany");
ms.put("FR", "France");
ms.put("JP", "Japan1234");
System.out.println(ms.size());
// 当有两个相同的键时,后面一个键的值替换前面的值
System.out.println(ms);
// 获取元素 根据键 对应的方法-- get()
System.out.println(ms.get("FR"));
// 删除元素 根据键 对应的方法-- remove()
ms.remove("JP");
System.out.println(ms);
2.Map集合的三种遍历方式
第一种:拿到所有的键(key)
Set<String> ks = ms.keySet();
for (String s : ks) {
System.out.println("键:"+s+"值:"+ms.get(s));
}
第二种:拿到所有的值(values)
Collection<String> vs = ms.values();
for (String s : vs) {
System.out.println(s);
}
第三种:拿到所有的键值对 调用entry方法
Set<Entry<String, String>> es = ms.entrySet();
for (Entry<String, String> e : es) {
// e就是一个键值对
System.out.println(e.getKey()+"--"+e.getValue());
}
四:哈希表
哈希表储存是由键(key)和值(value)组成的数据,
在哈希表中,我们可以利用哈希函数快速访问到数组中的目标数据。如果发生哈希 冲突,就使用链表进行存储。这样一来,不管数据量为多少,我们都能够灵活应对。 如果数组的空间太小,使用哈希表的时候就容易发生冲突,线性查找的使用频率也 会更高;反过来,如果数组的空间太大,就会出现很多空箱子,造成内存的浪费。因此, 给数组设定合适的空间非常重要。五:求字符串中字符的重复次数(HashMap)
String str="sdasdasndaskhdiaskhdaskdhdasdasasdasasbdiadhihlsajldghd";
Map<String, Integer> m=new HashMap<String, Integer>();
while (str.length()>0) {
int a1=str.length();//记录原来的长度
String old=str.charAt(0)+"";//字符的第0个字
str=str.replace(old, "");//取出str里面所有的old
int a2 = str.length();//取出之后的长度
m.put(old, a1-a2);//将字符和个数记录到map集合中
}
System.out.println(m);