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
  • 相关阅读:
    查询端口号的连接情况
    mac环境下安装python3的requests包
    Apollo配置中心介绍
    简单工厂,工厂方法,抽象工厂模式对比
    全表查询sql执行链路排查
    logstash部署及项目日志输出到ES
    【SpringMVC入门系列】篇4:SpringMVC传值方式
    【设计模式】外观模式
    【SpringMVC入门系列】篇3:@RequestMapping & @RequestHeader & @CookieValue详解与REST风格请求
    【SpringMVC入门系列】篇1:SpringMVC基本使用与执行流程
  • 原文地址:https://www.cnblogs.com/zhangchenliang/p/2025129.html
Copyright © 2011-2022 走看看