数据结构

一、枚举

枚举(Enumeration)接口虽然它本身不属于数据结构,但它在其他数据结构的范畴里应用很广。 枚举(The Enumeration)接口定义了一种从数据结构中取回连续元素的方式。
方法描述:
1、boolean hasMoreElements( )
测试此枚举是否包含更多的元素。
2、Object nextElement( )
如果此枚举对象至少还有一个可提供的元素,则返回此枚举的下一个元素。

package com;

import java.util.Enumeration;
import java.util.Vector;

public class EnumerationTest{
	public static void main(String args[]) {
		Enumeration<String> days;
		Vector<String> dayNames=new Vector<String>();
		dayNames.add("Sunday");
		dayNames.add("Monday");
		dayNames.add("Tuesday");
		dayNames.add("Wednesday");
		dayNames.add("Thursday");
		dayNames.add("Friday");
		dayNames.add("Saturday");
		days=dayNames.elements();
		while(days.hasMoreElements()) {
			System.out.println(days.nextElement());
		}
	}
}

输出结果:
在这里插入图片描述

二、栈

栈(Stack)实现了一个后进先出(LIFO)的数据结构,是Vector的一个子类。

你可以把栈理解为对象的垂直分布的栈,当你添加一个新元素时,就将新元素放在其他元素的顶部。

当你从栈中取元素的时候,就从栈顶取一个元素。换句话说,最后进栈的元素最先被取出。
方法描述:

  • boolean empty()
    测试堆栈是否为空。
  • Object peek( )
    查看堆栈顶部的对象,但不从堆栈中移除它。
  • Object pop( )
    移除堆栈顶部的对象,并作为此函数的值返回该对象。
  • Object push(Object element)
    把项压入堆栈顶部。
  • int search(Object element)
    返回对象在堆栈中的位置,以 1 为基数。

package com;

import java.util.EmptyStackException;
import java.util.Stack;

//后进先出
public class StackDemo{
//插入
static void showup(Stack st,int a) {
st.push(new Integer(a));
System.out.println(“push(”+a+")");
System.out.println(“stack:”+st);
}
//移除
static void showpop(Stack st) {
System.out.print(“pop->”);
Integer a=(Integer)st.pop();
System.out.println(a);
System.out.println(“stack:”+st);
}

public static void main(String args[]) {
	Stack<Integer> st=new Stack<Integer>();
	System.out.println("stack:"+st);//输出:stack:[]
	
	showup(st,44);/*输出:	push(44)
						 	stack:[44]*/
	showup(st,66);/*输出:	push(66)
	 						stack:[44,66]*/
	showup(st,99);/*输出:	push(99)
							stack:[44,66,99]*/
	showpop(st);/*输出:	pop->99
						stack:[44, 66]*/
	showpop(st);/*输出:	pop->66
						stack:[44]*/
	showpop(st);/*输出:	pop->44
						stack:[]*/
	//栈为空时再移除
	try {
		showpop(st);
	}catch(EmptyStackException e) {
		System.out.println("empty stack");//输出:pop->empty stack
	}
	
}

}

三、哈希表

Hashtable类提供了一种在用户定义键结构的基础上来组织数据的手段。
例如,在地址列表的哈希表中,你可以根据邮政编码作为键来存储和排序数据,而不是通过人名。
哈希表键的具体含义完全取决于哈希表的使用情景和它包含的数据。
方法详情:

  • void clear( )
    将此哈希表清空,使其不包含任何键。
  • Object clone( )
    创建此哈希表的浅表副本。
  • boolean contains(Object value)
    测试此映射表中是否存在与指定值关联的键。
  • boolean containsKey(Object key)
    测试指定对象是否为此哈希表中的键。
  • boolean containsValue(Object value)
    如果此 Hashtable 将一个或多个键映射到此值,则返回 true。
  • Enumeration elements( )
    返回此哈希表中的值的枚举。
  • Object get(Object key)
    返回指定键所映射到的值,如果此映射不包含此键的映射,则返回 null. 更确切地讲,如果此映射包含满足 (key.equals(k)) 的从键 k 到值 v 的映射,则此方法返回 v;否则,返回 null。
  • boolean isEmpty( )
    测试此哈希表是否没有键映射到值。
  • Enumeration keys( )
    返回此哈希表中的键的枚举。
  • Object put(Object key, Object value)
    将指定 key 映射到此哈希表中的指定 value。
  • void rehash( )
    增加此哈希表的容量并在内部对其进行重组,以便更有效地容纳和访问其元素。
  • Object remove(Object key)
    从哈希表中移除该键及其相应的值。
  • int size( )
    返回此哈希表中的键的数量。
  • String toString( )
    返回此 Hashtable 对象的字符串表示形式,其形式为 ASCII 字符 ", " (逗号加空格)分隔开的、括在括号中的一组条目。

package com;

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

public class HashTableDemo{
public static void main(String args[]) {
//新建哈希表
Hashtable balance=new Hashtable();
Enumeration names;
String str;
double bal;

	//插入
	balance.put("Zara", new Double(3434.34));
	balance.put("Mahnaz", new Double(123.22));
	balance.put("Ayan", new Double(1378.00));
	balance.put("Daisy", new Double(99.22));
	balance.put("Qadir", new Double(-19.08));
	
	//显示所有元素
	names=balance.keys();
	while(names.hasMoreElements()) {
		str=(String)names.nextElement();
		System.out.println(str+":"+balance.get(str));
	}
	System.out.println();
	//把键值Zara的元素在原来的基础上加1000
	bal=((Double)balance.get("Zara")).doubleValue();
	balance.put("Zara", new Double(bal+1000));
	System.out.println("Zara's new balance: "+balance.get("Zara"));
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值