
Map:api文档:
interface Map<K,V>
K - 此映射所维护的键的类型
V - 映射值的类型
概念: 将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。
Map 的实现类主要有 4 种:
- Hashtable
-
- 古老,线程安全
- HashMap
-
- 速度很快,但没有顺序
- TreeMap
-
- 有序的,效率比 HashMap 低
- LinkedHashMap
-
- 结合 HashMap 和 TreeMap 的有点,有序的同时效率也不错,仅比 HashMap 慢一点
Hashmap和HashTable 的区别(和ArrayList与Vector一样):
- 1.HashTable属于线程安全,线程同步
- 2.HashTable 效率较低
- 3.HahMap Key可以为NULL
- 4.扩容是HashMap是0.5倍,而HashTable 是1倍
map的五种取值方式:
1.keySet()
for(String k : map.keySet()){
String v = map.get(k);
System.out.println(k+":"+v);
}
使用keySet(),适合在只取key时效率较高。
2.Entry.keySet()
for (Iterator<String> iterator = map.keySet().iterator();iterator.hasNext();){
String k = iterator.next();
String v = map.get(k);
System.out.println(k+":"+v);
}
使用keySet(),适合在只取key时效率较高。
3.Entry
for (Map.Entry<String,String> k : map.entrySet()){
String key = k.getKey();
String v = k.getValue();
System.out.println(key+":"+v);
}
使用keySet(),适合在取key,value时效率较高。
4.
Iterator<Map.Entry<String,String>> iterator = map.entrySet().iterator();
while (iterator.hasNext()){
Map.Entry<String,String> entry = iterator.next();
String k = entry.getKey();
String v = entry.getValue();
System.out.println(k+":"+v);
}
5.map.value()
for(String str : map.value()){
}
适合,只取value
Set概念:
用于存储无序(存入和取出的顺序不一定相同)元素,值不能重复。
Set<String> set = new HashSet<>();
set.add("1");
set.add("2");
set.add("3");
System.out.println(set); //[1,2,3]
Iterator<String> a = set.iterator();
while (a.hasNext()){
System.out.println(a.next());
}