java 遍历哈希表 stl

来源:互联网 发布:淘宝网分销商 编辑:程序博客网 时间:2024/06/05 11:43

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源代码),因此它的内存空间可以是不连续的,通过指针来进行数据的访问,这个特点使得它的随即存取变的非常没有效率,因此它没有提供[]操作符的重载。但由于链表的特点,它可以以很好的效率支持任意地方的删除和插入。