`

List和Hashtable都是可以存储数据的,可为什么有时选择List,有时需要Hashtable

阅读更多
List和Hashtable都是可以存储数据的,可为什么有时选择List,有时需要Hashtable,这两个有什么区别?
这是一个面试经常问到的问题,我就被问到过,原来还真的没有考虑过这样的问题,只是去比较该用Vector还是ArrayList,该用 Hashtable还是该用HashMap了,我喜欢用示例测试,并在其中加上附注,这样更好理解
import java.util.*;
/**
 *List和Hashtable都是可以存储数据的,可为什么有时选择List,有时需要Hashtable,这两个有什么区别?
 *下面的例子可以回答这个问题
 *@authorhttp://blog.csdn.net/fenglibing
 *
 */
publicclass ListAndHashtable {
 
    //将构造器私有化,就不能对别的对象创建新对象了。
    private ListAndHashtable()
    {
       testList();
       testHashtable();
    }
    /**
     *@paramargs
     */
    publicstaticvoid main(String[] args) {
       // TODO Auto-generated method stub
       new ListAndHashtable();//但是这里可以正常使用.
       
    }
    void testList()
    {
       List list=new ArrayList();
       list.add("OK1");
       list.add("OK1");//测试是否允许重复值
       list.add(0,"OK2");
       list.add(0,"OK2");//测试是否在指定插入位置的时候,把前面的值替换掉
       list.add("OK3");     
       for(int i=0;i<list.size();i++)
       {
           //List的取值方式,是以下标而取,不能够按值取对象
           System.out.print(" "+list.get(i));
       }
       //上面输出结果为:OK2 OK2 OK1 OK1 OK3,说明允许重复值,
       //就算指定下标也不会把原来的值取代,会自动后移。
       System.out.println();
       Iterator it=list.iterator();
       while(it.hasNext())
       {
           System.out.print(" "+it.next());
       }
       //上面输出结果为:OK2 OK2 OK1 OK1 OK3
       System.out.println();
       Iterator it1=list.listIterator();
       while(it1.hasNext())
       {
           System.out.print(" "+it1.next());
       }
       //上面输出结果为:OK2 OK2 OK1 OK1 OK3
    }
    void testHashtable()
    {
       Hashtable table=new Hashtable();
       table.put("a", "You are very good!");
       table.put("b", "You not are very good!");
       table.put("c", "You are very bad!");
       table.put("a", "You are very good! Last");
       System.out.print(" "+table.get("a"));
       //下面输出结果是:You are very good! Last,说明一个键只能够有一值,后面的值会取代原来的值
       //取值方式,只能够通过按键取值,不能够通过下标取值。
        System.out.println();
       System.out.println(table.toString());
       //输出结果为:{b=You not are very good!, a=You are very good! Last, c=You are very bad!}
       //说明将table的键值可以转换成为字符串输出
       Enumeration e=table.elements();//枚举,可以依次将值列出来
       while(e.hasMoreElements())
       {
           System.out.print(e.nextElement());
       }
       //输出结果为:You not are very good!You are very good! LastYou are very bad!
    }
}
class test
{
    private test()
    {
       //因为ListAndHashtable的构造器为private,所以这里不能够创建对象,会报错
       ListAndHashtable l=new ListAndHashtable();
    }
}
分享到:
评论

相关推荐

    经典讲解List和ArrayList和Vector和HashTable和HashMap区别

    在Java编程语言中,集合框架是处理对象数组的重要工具,其中`List`、`ArrayList`、`Vector`、`HashTable`和`HashMap`是五个关键的接口和类,它们各有不同的特性和用途。以下是这些概念的详细解释: 1. **List接口**...

    List Hashtable 的相关操作 asp.net 内含详细代码示例

    由于 `Hashtable` 不支持自然排序,你需要先将数据转换为可以排序的数据结构,如 `Dictionary, TValue&gt;`,然后再进行排序。 9. **复制 List&lt;Hashtable&gt;**: ```csharp List&lt;Hashtable&gt; copyOfHashList = new List...

    C#中的集合示例(Array,ArrayList,Hashtable,List)

    注意,键必须是唯一的,且不可为null,而值可以是任意类型。 ### 4. List List是泛型集合,它是System.Collections.Generic命名空间下的一个类。与ArrayList相比,List更加安全,因为它在编译时就知道了元素的类型...

    Java集合专题总结:HashMap 和 HashTable 源码学习和面试总结

    * HashTable的key和value都不能为null,而HashMap的key和value都可以为null * HashTable的迭代器是fail-fast的,而HashMap的迭代器是fail-safe的 在Java中,Collection接口的子接口包括Set和List,分别代表无序集合...

    比较Vector、ArrayList和hashtable hashmap

    - HashMap 和 Hashtable 都实现了 Map 接口,HashMap 更快但不是线程安全的,而 Hashtable 是线程安全但较慢。WeakHashMap 则使用弱引用作为键,有助于防止内存泄漏。 - 在选择使用哪种数据结构时,需要考虑性能需求...

    c#数据结构之array,arraylist,hashtable,dictionary

    C#数据结构之Array、ArrayList、Hashtable、Dictionary ...Array、ArrayList、Hashtable和Dictionary都是C#中的常用数据结构,每种数据结构都有其优缺点,选择合适的数据结构可以提高程序的性能和可读性。

    Hashtable和HashMap的区别:

    在Java编程语言中,`Hashtable` 和 `HashMap` 都是用来存储键值对的数据结构。这两种数据结构虽然相似,但是在实现细节上存在显著差异。 1. **Hashtable**:作为 `Dictionary` 类的子类,`Hashtable` 是 Java 最早...

    List、ArrayList、Vector及map、HashTable、HashMap分别的区别

    List、ArrayList、Vector及map、HashTable、HashMap是Java容器类中的几个重要的接口和实现类,了解它们之间的区别是非常重要的。 首先,我们来看List和ArrayList的区别。List是一个接口,而ArrayList是一个实现了...

    Java容器类List、ArrayList、Vector及map、HashTable应用

    List、ArrayList、Vector及map、HashTable是Java中常用的容器类,它们都继承自Collection接口,并提供了不同的实现方式和特点。在实际开发中,选择合适的容器类是非常重要的。 Collection接口是Java中最基本的集合...

    C#_集合类_Array,Arraylist,List,Hashtable,Dictionary,Stack,Queue_学习资料

    在需要根据特定键访问数据的情况下,Dictionary是一个理想的选择,比如在存储购物车信息时,可以使用Dictionary, int&gt;存储商品名和数量,无需类型转换。Dictionary的遍历顺序与添加顺序一致,不同于Hashtable。 5. ...

    使用哈希表Hashtable填充ListBox

    在IT行业中,哈希表(HashTable)是一种常用的数据结构,它提供了一种高效的方式来存储和检索数据。在.NET框架中,`Hashtable`是System.Collections命名空间下的一个类,它实现了键值对(Key-Value Pair)存储,允许...

    Java中List、ArrayList、Vector及map、HashTable、HashMap分别的区别.

    如果需要键值对存储,可以选择Map,如HashMap或HashTable;在多线程环境下,需考虑同步性能,可以选择Vector或HashTable;对于内存效率和弱引用的需求,WeakHashMap是一个不错的选择。在实际应用中,通常推荐使用非...

    详解如何选择使用ArrayList、HashTable、List、Dictionary数组

    List的类型参数T确保了所有元素都为同一类型,从而提供了更安全和高效的数据存储。 HashTable是一种基于键值对的数据结构,提供快速的查找功能。由于不允许重复键,它的容量通常是质数,以优化哈希函数。然而,...

    HashTable Sort

    - 添加了一些键值对(这里键和值都是空字符串,实际应用中应该替换为实际的数据)。 - 提取了所有的键并存入 `ArrayList`。 - 对键列表进行了排序。 - 遍历排序后的键列表,并打印出对应的键值对。 2. **按值...

    C#中哈希表(HashTable)用法实例详解(添加/移除/判断/遍历/排序等)

    哈希表(HashTable)在C#编程语言中是一种常用的数据结构,它允许高效地存储和检索键值对数据。在.NET Framework中,`System.Collections`命名空间提供了`HashTable`类,用于存储和管理这些键值对。下面我们将深入探讨...

    java接口API,LIST,HASHTABLE

    `HashTable`是古老的键值对存储结构,线程安全但效率较低,已被`HashMap`所取代,`HashMap`是非线程安全但性能更高的选择。 集合框架的使用极大地提高了代码的可读性和复用性,同时通过接口的定义,可以灵活地更换...

    hashtable的使用

    通过以上介绍和示例代码,我们可以看到,在.NET Framework中,虽然哈希表默认并不支持排序,但通过一些技巧,如使用`ArrayList`配合哈希表,我们可以方便地实现自定义排序的需求。这种方式不仅能够保持哈希表原有的...

    c# 中的arrlist queue HashtableTest SortedList stack 集合

    本篇文章将深入解析几种常见的集合类型:ArrayList、Queue、Hashtable、SortedList以及Stack,通过具体的代码示例和理论解释,帮助读者理解每种集合的特点与应用场景。 ### ArrayList `ArrayList`是一个动态数组,...

    c#通讯录hashtable

    然而,需要注意的是,由于`Hashtable`是非泛型的,它使用`object`作为键和值的数据类型,这可能会导致类型转换的开销。在.NET Framework 2.0及以后的版本中,推荐使用泛型的`Dictionary, TValue&gt;`,它提供了更好的...

    hashtable建立样例

    但需要注意的是,哈希表不支持排序,如果需要按特定顺序访问数据,可能需要结合其他数据结构如`SortedList`或`List&lt;T&gt;`。 综上所述,了解并熟练运用VB.NET中的`Hashtable`对于开发高效的数据库应用程序至关重要。...

Global site tag (gtag.js) - Google Analytics