m2014-c->c模拟java的hashmap容器类
转自:http://bbs.csdn.net/topics/390034346
|
在java中像ArrayList,HashMap都是现成的,在java.util包中,用的时候直接import java.util.*就行了。
前几天写了一c版的ArrayList,同时欢迎大家指出问题: 今天有空,也为了练习一下c,我就参照着jdk中的HashMap源码,写了一个c版的HashMap,这个HashMap多少有点泛型的特征<E>。 关于这个HashMap,现在有一个困惑,在hashmap_remove()中,要不要在返回前free()? hashmap.h C/C++ code
|
||
|
#1 得分:0回复于: 2012-05-04 06:17:58
hashmap.c
C/C++ code
|
||
|
|
|
#2 得分:0回复于: 2012-05-04 06:19:59
测试hashmap用的例子:
main.c C/C++ code
|
||
8
9
6
|
#3 得分:10回复于: 2012-05-04 16:13:01
感谢分享.
|
|
#4 得分:10回复于: 2012-05-04 19:06:12
刚学完c(谭浩强版那本书),正学java中的白菜,看到Lz如此,我觉得,我连c的皮毛都没学到。帮忙顶了,感谢LZ分享,但是,我以后也会写出这般代码的!鼓励自己一下。哈,谢谢lz分享。
|
|
|
#5 得分:0回复于: 2012-05-05 05:40:50
今天早上测试 hashmap的key = 0(NULL)的时候,发现hashmap_keySet()函数有一个问题:
修改后的hashmap_keySet()如下: C/C++ code
|
m2014-c->c模拟java的hashmap容器类的更多相关文章
- Java中HashMap的实现原理
最近面试中被问及Java中HashMap的原理,瞬间无言以对,因此痛定思痛觉得研究一番. 一.Java中的hashCode和equals 1.关于hashCode hashCode的存在主要是用于查找 ...
- Java中的容器类(List,Set,Map,Queue)
Java中的容器类(List,Set,Map,Queue) 一.基本概念 Java容器类类库的用途是“保存对象”,并将其划分为两个不同的概念: 1)Collection.一个独立元素的序列,这些元素都 ...
- Java:HashMap的实现原理(JDK1.8)
1. HashMap概述: HashMap是基于哈希表的Map接口的非同步实现.此实现提供所有可选的映射操作,并允许使用null值和null键.此类不保证映射的顺序,特别是它不保证该顺序恒久不变 ...
- [转]java 的HashMap底层数据结构
java 的HashMap底层数据结构 HashMap也是我们使用非常多的Collection,它是基于哈希表的 Map 接口的实现,以key-value的形式存在.在HashMap中,key-v ...
- java:警告:[unchecked] 对作为普通类型 java.util.HashMap 的成员的put(K,V) 的调用未经检查
java:警告:[unchecked] 对作为普通类型 java.util.HashMap 的成员的put(K,V) 的调用未经检查 一.问题:学习HashMap时候,我做了这样一个程序: impor ...
- angularJS操作键值对象(类似java的hashmap)填坑小结
前言: 我们知道java的hashmap中使用最多的是put(...),get(...)以及remove()方法,那么在angularJS中如何创造(使用)这样一个对象呢 思路分析: 我们知道在jav ...
- Java学习——HashMap
遍历 Map map = new HashMap(); Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { Map. ...
- 模拟java.util.Collection一些简单的用法
/* 需求:模拟java.util.Collection一些简单的用法! 注意:java虚拟机中并没有泛型类型的对象.泛型是通过编译器执行一个被称为类型擦除的前段转换来实现的. 1)用泛型的原生类型替 ...
- Java之HashMap在多线程情况下导致死循环的问题
PS:不得不说Java编程思想这本书是真心强大.. 学习内容: 1.HashMap<K,V>在多线程的情况下出现的死循环现象 当初学Java的时候只是知道HashMap<K,V& ...
随机推荐
- 简单hello world
第一步配置路由: 打开app/http/route.php文件,输入:Route::get('/home', 'HomeController@index'); 第二步配置控制器: 控制文件可以手动添加 ...
- EF4.1 企业架构模式 自动映射数据表(转载)
在讲解之前,先来看看解决方案的架构: 1.在Nop.Core下的Domain里建立一个实体Category:2.在Nop.Data下的Mapping\Catatog\下建立一个数据表映射Categor ...
- 自己的一个验证电话和ecshop验证电话
//验证电话 function checkPhone($phone) { $preg_mobile = preg_match("/^1\d{10}$/", $phone ); $p ...
- tbnet编译
下载tbnet 下载地址:http://code.taobao.org/p/tb-common-utils/src/trunk/tbnet/ ,它的svn地址为:http://code.taobao. ...
- nexus 配置
1.下载 http://www.sonatype.org/nexus/go/ 例如:nexus-2.11.4-01-bundle.tar.gz 2.解压 tar -xzvf nexus-2.11.4 ...
- [Jobdu] 题目1507:不用加减乘除做加法
题目描述: 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 输入: 输入可能包含多个测试样例.对于每个测试案例,输入为两个整数m和n(1<=m,n<=100 ...
- 关于搭配junit 和JUnit报initializationError的解决方法
关于junit是什么就不复述了,网上有 junit的source code是可以下载的,各个版本都有 地址:https://github.com/junit-team 通过junit 的source ...
- 16位结构的CPU,8086给出物理地址的方法
.16位结构的CPU 概括地讲,16位结构(16位机,字长为16位等常见说法,与16位结构的含义相同)描述了一个CPU具有下面几方面结构特性: 1.运算器一次最多可以处理16位的数据结构 2.寄存器的 ...
- Unix系统编程()复制文件描述符
Bourne shell的IO重定向语法2>&1,意在通知shell把标准错误(文件描述符2)重定向到标准输出(文件描述符1).因此下列命令将把标准输出和标准错误写入result.log ...
- ngx_lua模块学习示例之waf
转自:http://www.tuicool.com/articles/FbQ3ymB WAF的主要功能为: ip黑白名单 url黑白名单 useragent黑白名单 referer黑白名单 常见web ...

