Java data structure: Stack and Hashtable

import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Stack;

public class Stack_Hashtable {
    
    
    public static void main(String[] args) {
    
    
        // Stack类
        // 栈是Vector的一个子类,它实现了一个标准的后进先出的栈。
        // 堆栈只定义了默认构造函数,用来创建一个空栈。
        // 堆栈除了包括由Vector定义的所有方法,也定义了自己的一些方法。
        // ********************************************************************
        // 除了由Vector定义的所有方法,自己也定义了一些方法:
        // 1、boolean empty()
        // 测试堆栈是否为空。
        // 2、Object peek( )
        // 查看堆栈顶部的对象,但不从堆栈中移除它。
        // 3、Object pop( )
        // 出栈:移除堆栈顶部的对象,并作为此函数的值返回该对象。
        // 4、Object push(Object element)
        // 进栈:把项压入堆栈顶部。
        // 5、int search(Object element)
        // 返回对象在堆栈中的位置,以 1 为基数。
        // ***********************************************************************
        Stack<Integer> stack = new Stack<Integer>();
        stack.push(3);
        stack.push(2);
        stack.push(1);
        while (!stack.empty()) {
    
    
            System.out.println(stack.pop());
        }

        // Hashtable 类
        // Hashtable现在集成到了集合框架中。它和HashMap类很相似,但是它支持同步。
        // 像HashMap一样,Hashtable在哈希表中存储键/值对。当使用一个哈希表,要指定用作键的对象,以及要链接到该键的值。
        // 然后,该键经过哈希处理,所得到的散列码被用作存储在该表中值的索引。

        // Hashtable定义了四个构造方法。
        // 1.Hashtable() : 默认过早方法
        // 2.Hashtable(int size):指定大小的哈希表
        // 3.Hashtable(int size,float fillRatio):
        // 指定大小的哈希表,并且通过fillRatio指定填充比例。
        // 填充比例必须介于0.0和1.0之间,它决定了哈希表在重新调整大小之前的充满程度
        // 4.Hashtable(Map m):
        // 创建了一个以M中元素为初始化元素的哈希表。哈希表的容量被设置为M的两倍。
        // ******************************************************************************************
        // 1.void clear( )
        // 将此哈希表清空,使其不包含任何键。
        // 2.Object clone( )
        // 创建此哈希表的浅表副本。
        // 3.boolean contains(Object value)
        // 测试此映射表中是否存在与指定值关联的键。
        // 4.boolean containsKey(Object key)
        // 测试指定对象是否为此哈希表中的键(唯一)。
        // 5.boolean containsValue(Object value)
        // 如果此Hashtable将一个或多个键映射到此值,则返回 true。
        // 6.Enumeration elements( )
        // 返回此哈希表中的值的枚举。
        // 7.Object get(Object key)
        // 返回指定键所映射到的值,如果此映射不包含此键的映射,则返回 null.
        // 更确切地讲,如果此映射包含满足 (key.equals(k)) 的从键 k 到值 v 的映射,
        // 则此方法返回 v;否则,返回 null。
        // 8.boolean isEmpty( )
        // 测试此哈希表是否没有键映射到值。
        // 9.Enumeration keys( )
        // 返回此哈希表中的键的枚举。
        // 10.Object put(Object key, Object value)
        // 将指定 key 映射到此哈希表中的指定 value。
        // 11.void rehash( )
        // 增加此哈希表的容量并在内部对其进行重组,以便更有效地容纳和访问其元素。
        // 12.Object remove(Object key)
        // 从哈希表中移除该键及其相应的值。
        // 13.int size( )
        // 返回此哈希表中的键的数量。
        // 14.String toString( )
        // 返回此 Hashtable 对象的字符串表示形式,其形式为 ASCII 字符 ", " (逗号加空格)分隔开的、括在括号中的一组条目。
        // ******************************************************************************************

        // 例子
        // 类似python中的dict()
        Hashtable hs = new Hashtable();
        Enumeration names;
        String str;
        double bal;

        char[] charArray = {
    
     'a', 'b', 'c' };
        hs.put("张三", 123.6);
        hs.put("李四", 963.2);
        hs.put("王五", "值也可以是字符串");
        hs.put("赵六", charArray);
        hs.put("钱七", 666);

        // Show all balances in hash table.
        names = hs.keys();
        while (names.hasMoreElements()) {
    
    
            str = (String) names.nextElement();
            System.out.println(str + ": " + hs.get(str));
        }
        System.out.println();
        // Deposit 1,000 into Zara's account
        bal = ((Double) hs.get("张三")).doubleValue();
        hs.put("张三", bal + 500);
        System.out.println("张三 对应的值: " + hs.get("张三"));
    }
}

Guess you like

Origin blog.csdn.net/wjl__ai__/article/details/112371424