Map接口、HashMap、Hashtable、TreeMap类

Map 接口 映射

Map接口

1.按 “键-值”对进行插入,(键、值都是对象)可以按照键来搜索值对象
可以查找值的集合,也可以查找键的集合

2.HashMap:一种未分类,是Map的实现类,未排序的映射类,不需要顺序时HashMap是一种最好的选择,因为其效率较高,HashMap允许集合中有一个null键和多个null值。

3.Hashtable:是Map的实现类,Hashtable 是HashMap的同步版本,但Hashtable不允许有任何的null存在。

4.TreeMap:一个顺序的Map集合。

HashMap

HashMap和Hashtable类似,非同步的,并且允许null,即null value和null key 。

用法例子:

HashMap<String, Student>  map=new HashMap<String, Student>();//声明一个HashMap类型的Map
map.put("jack", new Student("王为峰", 18));//添加信息
map.put("Rose", new Student("莉莉",17));
Set<String> keys = map.keySet();
 for (String string : keys) {//forEach遍历
	 System.out.println("key:"+string+"--->value:"+map.get(string));
}

//另一种接收类型
Set<Entry<String, Student>> entryset = map.entrySet();

  for (Entry<String, Student> entry : entryset) {
	  System.out.println(entry.getKey()+entry.getValue());
}
}

HashTable

1.以键值对的形式存储数据,Hashtable是同步的,键被散列,散列码用作存储值的下标。
2.构造函数
Hashtable( )、
Hashtable(int cap)、
Hashtable(int cap, float load)、
Hashtable(Map m)、
用法例子:

Hashtable<String, Student>  map=new Hashtable<String, Student>();//声明HashTable类型的Map
map.put("jack", new Student("王为峰", 18));
map.put("Rose", new Student("莉莉",17));
	
Set<String> keys = map.keySet();
for (String string : keys) {
	  System.out.println("key:"+string+"--->value:"+map.get(string));
}

TreeMap

注:

  1. 声明形式:TreeMap<key,value> tree=new TreeMap<key,value>();
    或者:TreeMap<value,key> tree=new TreeMap<value,key>();

  2. 若value在key之前,则需要compare比较器,但是String中已经存在比较器,所以这里不用写。

用法例子:

TreeMap<Student, String> tree=new TreeMap<Student, String>();
tree.put(new Student("wangwe",18), "jack");
tree.put(new Student("wangwe",17), "jack1");
tree.put(new Student("wangwe",20), "jack2");
	
Set<Entry<Student, String>> set = tree.entrySet();
for (Entry<Student, String> entry : set) {
	System.out.println(entry.getKey()+entry.getValue());
}
上一篇:2021-11-05


下一篇:十大排序算法——计数排序