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("张三"));
}
}
Java 数据结构:Stack和Hashtable
最新推荐文章于 2022-07-19 15:26:15 发布