Java集合框架 Map和泛型
作者:网络转载 发布时间:[ 2013/12/19 11:32:05 ] 推荐标签:
Map集合
1.特点:该集合存储键值对。一对一对往里存。而且要保证键的性。
2.常用方法:
1.添加:v put(k key , v value); 将数据以键值对的方式存进集合中。
void putAll(Map<? extends k,? extends v> m) ;从指定映射中将所有映射关系复制到此映射中
2.删除:void clear(); 清空集合
v remove(Object key); 将集合中的元素以键的形式移除。
3.判断:containsKey(Object key) 判断集合中是否有key。如果有,则返回true。
contaninValue(Object value) 判断集合中是否有value
4.查询:get(Object key);
size();
values();
entrySet();
keySet();
Map有三个常见子类:
|---Hashtable:此类实现一个哈希表,该哈希表将映射到相应的值。任何非null对象都可以用作键或值。该集合是线程同步的。 Jdk1.0 效率低
|--HashMap:底层是哈希表数据结构,允许使用null值和null键,该集合是不同步的。 Jdk1.2 效率高
|--TreeMap:底层是二叉树数据结构。线程不同步。可以用于给map集合中的键进行排序。
和Set很像。
其实Set底层是使用了Map集合。
注:如果添加相同的键,那么后添加的值会覆盖原来键对应值。
map集合的两种取出方式:
1.keySet:将map中所有的键存入到Set集合。因为set具备迭代器。所以可以用迭代的方式取出所有的键,在根据get方法。获取每一个键对应的值。
Map集合的取出原理:将map集合转成set集合。再通过迭代器取出。
2.Set<Map.Entry<k,v>> entrySet:将map集合中德映射关系存入到了set集合中,而这个关系的数据类型是:map.entry.
Map.Entry 其实Entry也是一个接口,它是Map接口中的一个内部接口。
为何要定义在其内部呢?
原因:
a.Map集合中存的是映射关系这样的两个数据,是先有Map这个集合,才可有映射关系的存在,而且此类关系是集合的内部事务。
b.并且这个映射关系可以直接访问Map集合中的内部成员,所以定义在内部。
|
package Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
import java.util.Map.Entry;
public class HashMapDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
entrySetMethod();
}
//利用keySet这个方法取出map集合中的值。
public static void keySetMethod(){
//创建一个HashMap集合,并添加了泛型。键值都是String类型的。
HashMap<String,String> hm = new HashMap<String,String>();
hm.put("01","zhangsan01");
hm.put("02","zhangsan02");
hm.put("03","zhangsan03");
hm.put("04","zhangsan04");
Set<String> keyset = hm.keySet();
for(Iterator<String> it =keyset.iterator();it.hasNext();){
String key =it.next();
String value = hm.get(key);
System.out.println("key: "+key+" "+"value:"+value);
}
}
public static void entrySetMethod(){
HashMap<String,String> hm = new HashMap<String,String>();
hm.put("01","zhangsan01");
hm.put("02","zhangsan02");
hm.put("03","zhangsan03");
hm.put("04","zhangsan04");
Set<Entry<String, String>> entry=hm.entrySet();
for(Iterator<Entry<String, String>> it =entry.iterator();it.hasNext();){
Entry<String, String> en = it.next();
System.out.println(en.getKey()+" "+en.getValue());
}
}
}
|

sales@spasvo.com