今日学习内容总结
- Map集合
Map集合
特点:
1、Map集合是一个双列集合,一个元素包含两个值(一个key,一个value)
2、Map集合中的元素,key和value的数据类型可以相同也可以不同
3、Map集合中的元素,key是不允许重复的,value可以重复
4、Map集合中的元素,key和value是一一对应的
常用子类:
-
HashMap<K,V>
特点:
1、HashMap集合底层是哈希表:查询速度特别快
2、HashMap集合是一个无序的集合,存取元素的顺序可能不一致 -
LinkedHashMap<K,V>
特点:
1、LinkedHashMap集合底层是哈希表+链表
2、LinkedHashMap集合是一个有序的集合,存取元素的顺序是一致的
常用方法:
-
public V put(K key, V value)
: 把指定的键与指定的值添加到Map集合中。
HashMap<String,String> hashMap =new HashMap<>();
hashMap.put("a","A");
-
public V remove(Object key)
: 把指定的键 所对应的键值对元素 在Map集合中删除,返回被删除元素的值。
hashMap.remove("a");
-
public V get(Object key)
根据指定的键,在Map集合中获取对应的值。
System.out.println(hashMap.get("b"));
-
boolean containsKey(Object key)
判断集合中是否包含指定的键。
System.out.println(hashMap.containsKey("c"));
-
public Set<K> keySet()
: 获取Map集合中所有的键,存储到Set集合中。
Set<String> key = hashMap.keySet();
System.out.println(key);
Set<String> set = hashMap.keySet();
for (String key : set) {
String value = hashMap.get(key);
System.out.println(key+"="+value);
}
-
public Set<Map.Entry<K,V>> entrySet()
: 获取到Map集合中所有的键值对对象的集合(Set集合)。
Set<Map.Entry<String, String>> entries = hashMap.entrySet();
System.out.println(entries);
Set<Map.Entry<String, String>> entries = hashMap.entrySet();
for (Map.Entry<String, String> entry : entries) {
Map.Entry<String, String> entry1 = entry;
System.out.println(entry1.getKey()+"="+entry1.getValue());
}
使用HashMap存储自定义类型的键值:
要保证key值唯一,需要重写自定义类的equals和hashCode方法
LinkedHashMap:存储有序的元素集合
Hashtable:键值都不能为null
- 小练习:输入一个字符串使用Map来计算每个字符出现的次数
public class mapTest {
public static void main(String[] args) {
System.out.println("输入一个字符串");
Scanner scanner=new Scanner(System.in);
String str = scanner.next();
HashMap<Character,Integer> map=new HashMap<>();
findChar(str,map);
}
private static void findChar(String str, HashMap<Character, Integer> map) {
char[] chars = str.toCharArray();
for (char c : chars) {
if(map.containsKey(c)){
Integer integer = map.get(c);
map.put(c,integer+1);
}
else {
map.put(c,1);
}
}
System.out.println(map);
}
网友评论