随笔4 Dictionary<K,V>
本来说是想介绍一下Hashtable的,但是发现HashMap和Hashtable最开始的不同就是在于HashMap继承了AbstractMap,而Hashtable继承了Dictionary<K,V>,所以决定先介绍一下Dictionary<K,V>。
首先承认Dictionary<K,V>是一个非常古老的抽象类了,并且很久都没有做过更新了。而且基于它产生了Hashtable也在之后被ConcurrentHashMap这个线程安全的Map代替了。写到这里我真的是有点不想写了,毕竟是一个过时的东西,但是面试偶尔还要问。
Dictionary和Map其实很相似,都是表示一种键值对,就是换了一个称呼而已,在迭代元素的时候用了Enumerator,但是这个东西也是实现了Iterator。把返回的元素叫做Enumeration
接下来看一波源码吧
public abstract class Dictionary<K,V> { public Dictionary() {
} /**
* 返回现在字典中的元素个数
*/
abstract public int size(); /**
* 如果字典中没有元素,返回true,否则返回false
*/
abstract public boolean isEmpty(); /**
* 这个Enumeration相当于是一个Iterator,只不过返回的是一个Key的集合,相当于一个HashMap的KeyIterator
*/
abstract public Enumeration<K> keys(); /**
* 这个Enumeration相当于是一个Iterator,只不过返回的是一个value的集合,相当于一个HashMap的ValueIterator
*/
abstract public Enumeration<V> elements(); /**
* 通过key查找对应元素的value值
*/
abstract public V get(Object key); /**
* 放入一个键值对,如果key以前存在,则返回原来的值,否则返回null
*/
abstract public V put(K key, V value); /**
* 删除key对应的键值对,如果key存在返回value,key不存在,返回null
*/
abstract public V remove(Object key);
}
在自己实现一个自己的Dictionary的时候,要注意的是,底层要有key和value的数据结构,并且数据结构实现了Iterator或者自己写一个实现了Iterator的类来满足迭代效果。
随笔4 Dictionary<K,V>的更多相关文章
- Array,ArrayList、List<T>、HashSet<T>、LinkedList<T>与Dictionary<K,V>
Array: 数组在C#中最早出现的.在内存中是连续存储的,所以它的索引速度非常快,而且赋值与修改元素也很简单. 但是数组存在一些不足的地方.在数组的两个数据间插入数据是很麻烦的,而且在声明数组的时候 ...
- ArrayList,Hashtable,List<T>,Dictionary<K,V>
1.ArrayList ArrayList list = new ArrayList(); //for遍历 ; i < list.Count; i++) { SE se=(SE)list[i]; ...
- C#泛型集合之Dictionary<k, v>使用技巧
1.要使用Dictionary集合,需要导入C#泛型命名空间 System.Collections.Generic(程序集:mscorlib) 2.描述 1).从一组键(Key)到一组值(Value) ...
- C#基础精华03(常用类库StringBuilder,List<T>泛型集合,Dictionary<K , V> 键值对集合,装箱拆箱)
常用类库StringBuilder StringBuilder高效的字符串操作 当大量进行字符串操作的时候,比如,很多次的字符串的拼接操作. String 对象是不可变的. 每次使用 System. ...
- C#泛型集合—Dictionary<K,V>使用技巧
转载:http://blog.csdn.net/a125138/article/details/7742022 1.要使用Dictionary集合,需要导入C#泛型命名空间 System.Collec ...
- 泛型集合List<T> Dictionary<K,V>
List<T>类似于ArrayList,ArrayList的升级版. 各种方法:Sort().Max().Min().Sum()… Dictionary<K,V>类似于Ha ...
- 转载C#泛型集合—Dictionary<K,V>使用技巧
1.要使用Dictionary集合,需要导入C#泛型命名空间 System.Collections.Generic(程序集:mscorlib) 2.描述 1).从一组键(Key)到一组值(Value) ...
- 10集合:List<T>,Dictionary<K,V>
List<T>泛型集合 List<T>是C#中一种快捷.易于使用的泛型集合类型,使用泛型编程为编写面向对象程序增加了极大的效率和灵活性. 1.List<T>用法 ...
- 基础才是重中之重~Dictionary<K,V>里V的设计决定的性能
回到目录 字典对象Dictionary<K,V>我们经常会用到,而在大数据环境下,字典使用不当可能引起性能问题,严重的可能引起内在的溢出! 字典的值建议为简单类型,反正使用Tuple< ...
随机推荐
- CentOS 6 修改时间和时区及设置修改及时间同步
一.时区 date -R; date ; hwclock --show ; ps -ef|grep ntpd 显示时区 date --help 获取帮助 date -R date +%z 上面两个命令 ...
- [CSP-S模拟测试]:模板(ac)(线段树启发式合并)
题目描述 辣鸡$ljh\ NOI$之后就退役了,然后就滚去学文化课了.他每天都被$katarina$大神虐,仗着自己学过一些姿势就给$katarina$大神出了一道题.有一棵$n$个节点的以$1$号节 ...
- 插头DP讲解+[BZOJ1814]:Ural 1519 Formula 1(插头DP)
1.什么是插头$DP$? 插头$DP$是$CDQ$大佬在$2008$年的论文中提出的,是基于状压$D$P的一种更高级的$DP$多用于处理联通问题(路径问题,简单回路问题,多回路问题,广义回路问题,生成 ...
- 阿里云配置通用服务的坑 ssh: connect to host 47.103.101.102 port 22: Connection refused
1.~ wjw$ ssh root@47.103.101.102 ssh: connect to host 47.103.101.102 port 22: Connection refused ssh ...
- 获取oracle数据库对象定义
在oracle中,使用DBMS_METADATA包中的GET_DDL函数来获得对应对象的定义语句.GET_DDL函数的定义如下: DBMS_METADATA.GET_DDL ( object_type ...
- 【C++进阶:STL常见性质2】
一般STL函数接收迭代器参数的规则为:[it1, it2) 左闭右开区间: vector<int> scores; scores.erase(scores.begin(),scores.e ...
- iview在项目中遇到的坑
1.下拉框选中某一项搜索发现总是搜不到,最后发现是选中后选中值后边莫名多了很长的空格,原因很简单,在代码中opction闭合标签和主体没有在一行. 2.iview+vue项目中,用百分比或者displ ...
- Spring 容器的基本用法
容器的基本用法 bean 是 Spring 中最核心的东西,因为 Spring 就像是个大水桶,而 bean 就像是容器中的水,水桶脱离了水也没什么用处了,来看看 bean 的定义. public c ...
- MySQL 中 limit 的使用
需要注意的是,在Oracle中不使用limit,Oracle 使用rownum select no,name from emp limit 5 取前5条记录, select no,name from ...
- 简历内容-resume
1.TCP.UDP通信 服务器客户端 网络层 2.http协议 通信 网络编程 应用层 根据公司给出的应用层协议开发指定程序: 3.json cjson Cjson解析器 4.freeRT ...