---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IO开发S</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
Map是双列集合的根接口,与Collection并列,它实现的子类有HashMap,Hashtable和TreeMap,它的形式是以键和值得形式存在,其中键是唯一的,每个键最多映射一个值.Map中键与值得关系就如同身份证号对应每个人的关系,身份证号是唯一的,每个身份证号也就对应一个人,当身份证遗失补办,身份证号仍是唯一的,只是那张证变化了.Map中的常用方法有:
1,添加:
V put(k ,v)
void putAll(map);
2,删除:
void clear()
v remove(k)
3,判断。
boolean containsKey(Object key)
boolean containsValue(Object value)
boolean isEmpty()
4,获取。
int size()
v get(k)
Map中是没有迭代器的,itertor()是Collection特有的方法,如果想对双列集合进行迭代,就需要将它转化成Set,即获取它的键值关系,在进行迭代,有2种方式,Set<Map.Entry<K,V>>set entrySet()和Set<key>set keySet().
HashMap与Hashtable的比较:
相同点:底层数据结构都是hash表,都是双列集合
不同点:HashMap是1.2版本出现的,不同步,线程不安全,效率很高,继承了AbstractMap体系;Hashtable是1.0版本出现的,同步,线程安全,效率很低,继承了Dictionary体系.
TreeMap是按照字典顺序为集合排序,当需要按照自己的方式进行排序时,要对对象进行封装后,创建一个比较器,比较对象的属性.
在JDK1.5之后,出现了泛型,它的出现提高了程序的安全性,将运行期遇到的问题转移到了编译期,省去了类型强转的麻烦,泛型类的出现优化了程序设计,可见它的优势.泛型用在类,方法和接口上,例如:
泛型类:
class Tool<Q>{
private Q obj;
public void setObj(Q obj){
this.obj = obj;
}
public Q getObj(){
return obj;
}
}
Tool<Student> t = new Tool<Student>();
t.setObj(new Worker());
泛型方法:
class Tool<T>{
public void show(T t){
System.out.println("show:"+t);
}
public <Q> void print(Q q){
System.out.println("print:"+q);
}
}
泛型接口
interface Inter<T>{
public void show(T t);
}
class InterImpl<T> implements Inter<T>{
public void show(T t){
System.out.println("show :"+t);
}
}//类在实现接口的时候没有指定引用数据类型
class InterImpl implements Inter<String>{
public void show(String s){
System.out.println(s);
}
}类在实现接口的时候指定了引用数据类型
其中通配符与问号也值得一说,二者的区别是
1,通配符修饰的泛型不能用来直接创建变量对象。
2,通配符修饰相当于声明了一种变量,它可以作为参数在方法中传递。
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IO开发S</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------