Java 第十课:Java数据结构

Java提供了一下几种数据结构:
枚举(Enumeration)
位集合(BitSet)
向量(Vector)
栈(Stack)
字典(Dictionary)
哈希表(Hashtable)
属性(Properties)
Java2中引入了一种新的框架-集合框架(Collection)。

一、枚举 Enumeration

	static void enumerationTest() {
		Enumeration<String> days;
		Vector<String> dayNames = new Vector<String>();
		dayNames.add("monday");
		dayNames.add("tuesday");
		dayNames.add("wednesday");
		
		days = dayNames.elements();
		while (days.hasMoreElements())
			System.out.println(days.nextElement());
	}
	输出结果:
		monday
		tuesday
	wednesday

二、Bitset类
Bitset类创建一种特殊类型的数组来保存位值。BitSet中数组大小会随需要增加。

	1. 构造方法:
		创建一个默认的对象:								BitSet()
		指定初始大小,所有位初始化为0:				BitSet(int size)
		
	2. BitsetCloneable接口中定义的方法:
		Bitset bit1 = new Bitset(16);
		Bitset bit2 = new BItset(16);
		
		void and(Bitset bit);			//bit1.and(bit2)
		void or(Bitset bit);			//对此位 set 和位 set 参数执行逻辑或操作。bit1.or(bit2);
		void xor(Bitset bit);			//对此位 set 和位 set 参数执行逻辑异或操作。bit1.xor(bit2);
		void andNot(BitSet set)	//清除此 BitSet 中所有的位,其相应的位在指定的 BitSet 中已设置。
		void clear( );					//将此 BitSet 中的所有位设置为 false。
		void clear(int index);		//将索引指定处的位设置为 false。
		void clear(int startIndex, int endIndex);	//将指定的 startIndex(包括)到指定的 toIndex(不包括)范围内的位设置为 false。

		Object clone( );		//复制此 BitSet,生成一个与之相等的新 BitSet。
		boolean equals(Object bitSet);	//将此对象与指定的对象进行比较。
		void set(int index);		//将指定索引处的位设置为 true。
		void set(int index, boolean v);		// 将指定索引处的位设置为指定的值。
		void set(int startIndex, int endIndex);	//将指定的 fromIndex(包括)到指定的 toIndex(不包括)范围内的位设置为 true。
		void set(int startIndex, int endIndex, boolean v)	//将指定的 fromIndex(包括)到指定的 toIndex(不包括)范围内的位设置为指定的值。
		boolean get(int index);	//返回指定索引处的位值。
		BitSet get(int startIndex, int endIndex);	//返回一个新的 BitSet,它由此 BitSet 中从 fromIndex(包括)到 toIndex(不包括)范围内的位组成。

三、Stack类
栈是Vector的一个子类,它实现了一个标准的后进先出的栈。
语法格式:
Stack(); //创建一个空栈

	Stack 方法
	1. boolean empty();						//是否为空
	2. Object peek();							//查看栈顶对象
	3. Object pop();							//取栈顶对象
	4. Object push(Object element);	//对象入栈
	5. int search(Object element);		//查询对象在栈中的位置,以1为基数
	实例:
	static void MyStackTest() {
		Stack<Integer> stack = new Stack<Integer>();
		System.out.println("stack " + stack);
		System.out.println("empty " + stack.empty());
		for (int i = 0; i < 10; i++)
			stack.push(i);
		System.out.println("6 index: " + stack.search(6));
		System.out.println("Stack object:");
		for(int j = 0; j < 10; j++)
			System.out.print(stack.pop() +"\t");
	}
	输出结果:
		stack []
		empty true
		6 index: 4
		Stack object:
		9	8	7	6	5	4	3	2	1	0

四、Hashtable类
Hashtable是原始的java.util的一部分, 是一个Dictionary具体的实现 。Java 2 重构的Hashtable实现了Map接口,因此,Hashtable现在集成到了集合框架中。它和HashMap类很相似,但是它支持同步。像HashMap一样,Hashtable在哈希表中存储键/值对。当使用一个哈希表,要指定用作键的对象,以及要链接到该键的值。然后,该键经过哈希处理,所得到的散列码被用作存储在该表中值的索引。
构造方法:
1. Hashtable();
2. Hashtable(int size); //指定大小
3. Hashtable(int size, float fillRatio); //指定大小,并且同时指定填充比例[0.0, 1.0],
4. Hashtable(Map m); //指定hash表初始化元素的值是M中的元素,Hashtable容量是M的两倍。

Hashtable内置方法:
	1. void clear();
	2. Object clone();
	3. boolean contains(Object value);
	4. boolean containsKey(Object key);
	5. boolean containsValue(Object value);
	7. Object get(Object key);
	8. Object put(Object key, Object value);
	9. Object remove(Object key);
	10. Enumeration keys();
	11. int size();
	12. void rehash();
	13. boolean isEmpty();
	14. String toString();
实例:
	static void MyHashtableTest() {
		Enumeration name;
		double score;
		Hashtable stud = new Hashtable();
		
		stud.put("lili", new Double(89.0));
		stud.put("yoyo", 99.0);
		stud.put("yiyi", 88);
		
		name = stud.keys();
		System.out.println("show students info:");
		while(name.hasMoreElements()) {
			//System.out.println(name.nextElement() + stud.get((String)name.nextElement()));
			String str = (String)name.nextElement();
			System.out.println(str + "'s score "+ stud.get(str));
		}
		System.out.println();
	}
	输出结果:
		show students info:
		yiyi's score 88
		lili's score 89.0
		yoyo's score 99.0

五、Vector类
Vector类跟ArrayList很相似,它实现了一个动态数组。但两者又有区别,首相Vector是同步访问的,另外Vector包含了传统的方法,并且这些方法不属于i集合框架。
Vector主要应用在事先不知道数组大小或需要改变数组大小的情况。

	Vector构造方法:
		1. Vector();				//默认大小为10
		2. Vector(int size);	//指定大小
		3. Vector(int size, int incr);	//指定大小同时指定增量(向量每次增加的元素的数目)。
		4. Vector(Collection c);	//包含集合c元素的向量。
	Vector方法:
		1. void add(int index, Ojbect element);
		2. boolean add(Object o);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值