map hashMap

一、map
                       Map


Hashtable                 HashMap   1.键值对 2.没有迭代顺序       SortedMap


Properties                LinkedHashMap 带有迭代顺序的HashMap    NavigableMap


                                  TreeMap

 

2.HashMap

key value

键和值一一对应

HashMap使用hashcode()和equals()判断是否为同一个key,如果hashCode()和equals()都相等,是同一个key

替换原则:当key相同时,key不变value覆盖,

3.LinkedHashMap

带有迭代顺序的HashMap

4.Hashtable和HashMap的区别

Hashtable在早期的API jdk1.0就有了

1. Hashtable 是线程安全版本的HashMap

2. Hashtable 的key 和value都不允许为null

   HashMap  可以由一个null 的key 和 多个null的value

5.TreeMap

可以排序的Map,按照key排序

TreeMap如何判断是同一个key,使用compareTo()进行判断,如果compareTo()为0,认为是同一个key

第二个key 不变 value覆盖

6.HashSet的实质

底层就是HashMap,把放到set里面的元素放到map的key中,而map的Value用一个静态常量补存。

Set<DVD> set = new HashSet<DVD>();

set.add(dvd1);

map.put(dvd1,obj);

 public class HashSet<Object>{

 private static final Object obj = new Object();

 Map<DVD,Object> map = new HashMap<DVD,Object>();

public boolean add(Object e) {
          return map.put(e, PRESENT)==null;
     }
}
7.泛型

为什么要使用泛型?

对类的属性进行修改时,使用object虽然能满足要求,但还是不能不安全的,这种错误在编译的时候发现不了,只有在运行的时候才能暴露出来,所以要引入泛型

泛型的作用:

1.编译的时候,可以帮我们检查具体的类型是不是正确的,如果类型不一样,编译报错,提高了程序的健壮性

2.不需要再向下转型,不会出现classCastException,使程序更加简单

泛型的两点说明:

1.如果使用的时候没有为泛型类型指定类型,还是传入了Object类型,还是会产生异常

2.JDK7.0开始后面的泛型可以不加,可以只加前面的

定义类的时候:类型的形参

方法的形参、实际

 Set<String> set = new HashSet<String>();//<String> 实参

8.泛型比object的好处

Object虽然可以添加任何类型,但是不太安全,添加进去以后,会向上转型成Object,取出来的时候需要向下转型,向下转型不安全,可能发生ClassCastException,而且还比较麻烦...

为了保证程序的健壮性和易用性,出现了泛型...

9.关于泛型的注意点:重载时候只判断类型,不判断泛型

10、泛型擦除

把一个带泛型的引用赋值给一个不带泛型的引用 叫做泛型擦除

泛型擦除后,原有的类型会向上转型成Object类型会丢失,转型成object以后,又可以随意的修改类型了,不安全

<?>可以传任意类型 但只能传不能修改

11.泛型的上限和下限

泛型上限:?继承父类    可以在方法和声明参数上使用

泛型下限:?super 类 只能写在方法参数上

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值