java泛型:构建可反转排序的泛型字典类(5)--实现IEnumerable> 接口

  下载完整代码: http://file.ddvip.com/2008_10/1224750278_ddvip_8158.rar 

  5. 实现IEnumerable<KeyValuePair<TKey, TValue>>接口

  我们先来看看ReversibleSortedList类定义:

public ReversibleSortedList<TKey, TValue> :
    IDictionary<TKey, TValue>, ICollection<KeyValuePair<TKey, TValue>>,
    IEnumerable<KeyValuePair<TKey, TValue>>, IDictionary, ICollection, IEnumerable


  它共实现了6个接口但从本质上来说实现IDictionary<TKey, TValue>接口和IDictionary接口就等同于实现了以上6个接口IDictionary<TKey, TValue>继承自ICollection<KeyValuePair<TKey, TValue>>和IEnumerable<KeyValuePair<TKey, TValue>>接口而IDictionary接口继承自ICollection和IEnumerable接口下面我们来看下这些接口关系图:

ReversibleSortedList<, >;
    rs.Add(3,"a");
    rs.Add(1,"b");
    rs.Add(2,"c");
    rs.Add(6,"d");
    rs.Add(5,"e");
    rs.Add(4,"f");
    foreach (KeyValuePair<, > d in rs)
    {
      Console.WriteLine(d.Key + "  " + d.Value);
    }
  }



  由于代码已经达到300行贴到博客上会导致运行缓慢后面所有可运行代码将以文件形式给出大家可以直接下载运行

  ReversibleSortedList 0.4版本:实现迭代

  运行结果:

1  b
2  c
3  a
4  f
5  e
6  d


  真棒现在已经取得了阶段性成果但还有些遗憾虽然在Enumerator类中实现了IDictionaryEnumerator接口但还不能在foreach中使用DictionaryEntry访问元素这是IDictionary接口重载了GetEnumerator接口而它返回个IDictionaryEnumerator接口也就是说只有实现了IDictionary接口才能使用DictionaryEntry访问其中元素实现IDictionary接口的前我们需要建立些辅助内部类这将在下节进行讲解



Tags:  泛型编程与stl 泛型编程 .net泛型 java泛型

延伸阅读

最新评论

发表评论