我学过的java5 理解Map

理解Map

  • 映射表(的基本思想),是维护他的建和值的关联。,你可以使用键来维护它的查找值。想理解Map,可以观察关联数组是如何创建的
public class AssociativeArray<K,V>{
    private Object[][] pairs;
    private int index;
    private AssociativeArray(int length){
        pairs=new Object[length][12];
    }
    public void put(K key,V value){
        if(index>=pairs.length)
            throw  new ArrayIndexOutOfBoundsException();
            pairs[index++]=new Object[]{key,value};

    }
    public V get(K key){
      for(int i=0;i<index;i++){
          if(key.equals(pairs[i][0])){
              return (V)pairs[i][1];
          }
      }
      //找不到
        return null;
    }
    public String toString(){
      StringBuffer stringBuffer=new StringBuffer();
        for(int i=0;i<index;i++){
            stringBuffer.append(pairs[i][0].toString());
            stringBuffer.append(":");
            stringBuffer.append(pairs[i][1].toString());
            if(i<index-1){
                stringBuffer.append("\n");
            }
        }
        return stringBuffer.toString();
    };
    public static void main(String args[]){
        AssociativeArray<String,String> map=new AssociativeArray<String, String>(6);
        map.put("sky","blue");
        map.put("grass","green");
        map.put("ocean","dancing");
        map.put("earth","brown");
        System.out.println(map.get("sky"));
        System.out.println();
        System.out.println(map.get("grass"));
    }
}

关联数组中的基本方法就是put和get, main()加载了一个AssociativeArray,并打印了所产生的映射表。
为了使用get()方法,你需要传递一个key,然后它会与相关的值结果返回。或者在找不到值的时候返回null。
get()方法可能是想象到的最低效率的查找方式,因为它需要从头开始查找。是用equals依次比较。 ,但是在实际的Map中没有这些问题。因为使用hash表查找的。

Map的性能

  • 性能是映射表的重要问题。 就像上边的代码。在使用get搜索的时候,执行速度会非常的慢。而这正是HashMap提高速度的方法。HashMap是用的特殊值。称作散列码 ,来取代对键的缓慢搜索。
  • 散列码 是相对唯一的 用代表的对象的int值,它是通过将该对象的某些信息而生成的。HashCode是父类Object中的方法,因此所有Java对象都能产生散列码。 HashMap就是使用对象HashCode进行快速查询的,因此可以提高查询的性能。如果觉得java的Map性能还是不够快,可以自己写一个更快速的查询。
  • 下面一章对于如何用HashCode查询的理解。!!!!!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

昏暗的夜晚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值