随笔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< ...
随机推荐
- eclipse配置apache tomcat运行时访问路径不需要项目名称
问题:tomcat运行项目默认是要带上项目名的,有时候不想要项目名来访问,如何解决呢? 方法: 1:双击打开tomcat 2:选择Modules,选择你要修改的项目 3:点击Edit,把path修改成 ...
- Linux命令行下常用svn命令
1.Linux命令行下将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/do ...
- Dreamweaver cc新版本css单行显示
新版本通用:(1)C:\Users\admin\Application Data\Adobe\Dreamweaver CC 2018\cloudpref\Adobe Dreamweaver CC 20 ...
- 双边滤波Matlab代码
%简单地说: %A为给定图像,归一化到[,]的矩阵 %W为双边滤波器(核)的边长/ %定义域方差σd记为SIGMA(),值域方差σr记为SIGMA() %%%%%%%%%%%%%%%%%%%%%%%% ...
- 北风设计模式课程---单一职责原则(Single Responsibility Principle)
北风设计模式课程---单一职责原则(Single Responsibility Principle) 一.总结 一句话总结: 一个类应该有且只有一个变化的原因:单一职责原则(SRP:Single Re ...
- JavaScript export
export The export statement is used when creating JavaScript modules to export functions, objects, o ...
- zepto-touch.js插件
/* Zepto v1.2.0 - zepto event ajax form ie - zeptojs.com/license */(function(global, factory) { if ( ...
- (转)oracle触发器使用:after insert 与before insert的简单使用注意
本文转载自:http://blog.csdn.net/kuangfengbuyi/article/details/41446125 创建触发器时,触发器类型为after insert , 在begin ...
- Fragment 基础使用及重叠问题
一 基本使用 Fragment依附于Activity使用,方面我们在一个页面里面切换显示多屏内容. Activity管理Fragment有两种方式,通过FragmentTransacation这个类来 ...
- 012-elasticsearch5.4.3【五】-搜索API【一】搜索匹配所有matchAllQuery、全文查询[matchQuery、multiMatchQuery、commonTermsQuery、queryStringQuery、simpleQueryStringQuery]
一.概述 查询所使用的 QueryBuilders来源于以下 import static org.elasticsearch.index.query.QueryBuilders.*; 请注意,您可以使 ...