梦想与现实的落差,就是我们离成功的距离!!

博客园 首页 新随笔 联系 订阅 管理
  34 随笔 :: 4 文章 :: 403 评论 :: 27万 阅读
不知道把这么一篇不入流的东西放在首页有碍观瞻,但就算是新手也一般是浏览首页,我的目的也是希望给一些碰到类似问题的新手提供点帮助,也希望得到高手的指点。
先看下面的代码

using System;
using System.Collections;

namespace NoSortHashtable
{
    
/// <summary>
    
/// Summary description for Class1.
    
/// </summary>
    class Class1
    {
        
/// <summary>
        
/// The main entry point for the application.
        
/// </summary>
        [STAThread]
        
static void Main(string[] args)
        {
            Hashtable hashTable 
= new Hashtable();

            hashTable.Add(
"hunan","changsha");
            hashTable.Add(
"beijing","beijing");
            hashTable.Add(
"anhui","hefei");
            hashTable.Add(
"sichuan","chengdu");
            
foreach(string str in hashTable.Keys)
            {
                Console.WriteLine(str 
+ " : " + hashTable[str]);
            }

        }
    }
}

打印的结果是:
    anhui : hefei
    hunan : changsha
    sichuan : chengdu
    beijing : beijing

当然,产生这个结果的原因大家都知道,Hashtable内部的排序机制使然,但我现在就是不想排序,我按什么顺序输入的,就想它再怎么给我输出,怎么办?去Google酷了一下,却因为不知道使用什么关键字去酷,结果没有酷出好的相关问题来。
我想到,ArrayList是不排序的啊,那是不是让ArrayList和Hastable配成良缘,那么它们的结晶就是我想要的呢,既有Hashtable的丰富功能,又可以满足我的BT的要求(不排序),动手了。
using System;
using System.Collections;

namespace NoSortHashtable
{
    
/// <summary>
    
/// Summary description for NoSortedHashtable.
    
/// </summary>

    public class NoSortHashtable : Hashtable
    
{
        
private ArrayList keys = new ArrayList();

        
public NoSortHashtable()
        
{
        }

        

        
public override void Add(object key, object value)
        
{
            
base.Add (key, value);
            keys.Add (key);
        }


        
public override ICollection Keys
        
{
            
get
            
{
                
return keys;
            }

        }


        
public override void Clear()
        
{
            
base.Clear ();
            keys.Clear ();
        }


        
public override void Remove(object key)
        
{
            
base.Remove (key);
            keys.Remove    (key);
        }

        
public override IDictionaryEnumerator GetEnumerator()
        
{
            
return base.GetEnumerator ();
        }


    }

}


再试
            hashTable = new NoSortHashtable();

            hashTable.Add(
"hunan","changsha");
            hashTable.Add(
"beijing","beijing");
            hashTable.Add(
"anhui","hefei");
            hashTable.Add(
"sichuan","chengdu");
            
foreach(string str in hashTable.Keys)
            {
                Console.WriteLine(str 
+ " : " + hashTable[str]);
            }

打印结果:
    hunan : changsha
    beijing : beijing
    anhui : hefei
    sichuan : chengdu


问题解决!!
应该很早之前就有人这么解决,只是我不知道而已,高手也应该有更好的办法,只是我想不到而已!
见笑,见谅!
posted on   叶漂  阅读(14373)  评论(42编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示