zoukankan      html  css  js  c++  java
  • Hashtable 的烦恼!

    不知道把这么一篇不入流的东西放在首页有碍观瞻,但就算是新手也一般是浏览首页,我的目的也是希望给一些碰到类似问题的新手提供点帮助,也希望得到高手的指点。
    先看下面的代码

    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
  • 相关阅读:
    nodepad++中的正则表达式匹配和替换操作。
    QT Creator配置环境和安装
    圣诞树小程序的制作
    C#编辑xml文件
    delegate里的Invoke和BeginInvoke
    记录RFID操作错误
    关于Panel隐藏横向滚动条
    随笔
    Java图形打印 上下对称三角星
    Centos 7.5安装 Redis 5.0.0
  • 原文地址:https://www.cnblogs.com/zhangchenliang/p/2025129.html
Copyright © 2011-2022 走看看