java 遍历哈希表 stl

1.HashMap visit

比如哈希表为map,类型为从Integer到 String的映射。
遍历代码如下:      
HashMap<Integer, String> Map;
Iterator iter = Map.entrySet().iterator();//先获取这个map的set序列,再或者这个序列的迭代器
        while(iter.hasNext()){
            Map.Entry entry = (Map.Entry)iter.next();
//得到这个序列的映射项,就是set中的类型,HashMap都是Map.Entry类型(详情见map接口声明)
            Integer key = (Integer)entry.getKey(); //获得key
            String boxuri = (String)entry.getValue();//获得value,都要强制转换一下
        }


2. Set and HastSet

A Set is a data structure which does not allow duplicate elements.

HashSet is an implementation of a Set. 


3. list and vector

vector和built-in数组类似,它拥有一段连续的内存空间,并且起始地址不变,因此它能非常好的支持随即存取,即[]操作符,但由于它的内存空间是连续的,所以在中间进行插入和删除会造成内存块的拷贝,另外,当该数组后的内存空间不够时,需要重新申请一块足够大的内存并进行内存的拷贝。这些都大大影响了vector的效率。
list就是数据结构中的双向链表(根据sgi stl源代码),因此它的内存空间可以是不连续的,通过指针来进行数据的访问,这个特点使得它的随即存取变的非常没有效率,因此它没有提供[]操作符的重载。但由于链表的特点,它可以以很好的效率支持任意地方的删除和插入。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值