黑马程序员_集合_双列集合

        ---------------------- <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>、期待与您交流! ----------------------

        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值