Java程序设计--java集合类
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第六章 基础类库和工具类库
Stack类
Stack类是Vector的子类。 Stack类描述堆栈数据结构,即LIFO。 Stack类的关键方法:
void push(Object item) //把项压入栈顶 Object pop() Object peek() //查看栈顶对象而不移除它 boolean empty() // 测试堆栈是否为空 演示 移除栈顶对象并作为此函数的值返回该对象 public public public public
18
Stack类举例 import java.util.*; public class Stacks{ static String[] months={"1","2","3","4"}; public static void main(String[] args){ Stack stk = new Stack(); for(int i=0; i<months.length; i++) stk.push(months[i]); System.out.println(stk); System.out.println("element 2=" + stk.elementAt(2)); while(!stk.empty()) System.out.println(stk.pop()); } }
返回带正号的 double 值,大 于或等于 0.0,小于 1.0。
该例子用来检验Math.random()方法的随 机性。在理想情况下,它应该产生一系列完 美的随机分布的数字。为了验证这一点,我 们需要生成数量众多的随机数字,然后计算 落在不同范围内的数字量。该程序生成 10000个随机数,看它们在0~20之间的 分布如何。
12
第六章 基础类库和工具类库
Vector类
Vector类关键方法:
void addElement(Object obj) void add(int index, Object element) Object elementAt(int index) void insertElementAt(Object obj, int index)
第六章 基础类库和工具类库
Java集合类
集合类概述
集合类作用、特点
旧的集合类介绍
Vector、Hashtable、Stack
新的集合类介绍
Collection、Set、Map、List
1
第六章 基础类库和工具类库
集合类概述
集合类的作用:
Java的集合类提供了一些基本数据结构的 支持。 例如Vector、Hashtable、Stack等。
例2: 演示基本类型数组用法:
int[] d= {100,200,300}; System.out.println(d.length); // 输出3 a = d; //数组之间赋值 System.out.println(a.length); // 输出3 for(int i=0; i<a.length; i++) System.out.println(a[i]); // 输出100,200,300 a = new int[] {1,2}; System.out.println(a.length); // 输出2 } }
例2: 演示基本类型数组用法: public class ArraySize2{ public static void main(String[] args){ int[] a; /* System.out.println(a.length); 产生编译错误,因为a没 有定义大小*/ int b[] = new int[5]; System.out.println(b.length); //输出5 for(int i=0; i<b.length; i++) System.out.println(b[i]); //输出5个0 int[] c = new int[4]; for(int i=0; i<c.length; i++) c[i]=i; System.out.println(c.length); //输出4
21
第六章 基础类库和工具类库
Hashtable举例 import java.util.*; class Counter{ int i=1; public String toString(){ return Integer.toString(i); } } public class Statistics{ public static void main(String[] args){ Hashtable ht = new Hashtable(); for(int i=0; i<10000; i++){ Integer r = new Integer((int)(Math.random()*20)); if(ht.containsKey(r)) ((Counter)ht.get(r)).i++; else ht.put(r, new Counter()); } System.out.println(ht); } }
3
第六章 基础类库和工具类库
集合类概述
集合类特点二:
集合类容纳的对象都是Object类的实例,一旦把 一个对象置入集合类中,它的类信息将丢失,这样设 计的目的是为了集合类的通用性。 因为Object类是所有类的祖先,所以可以在这些 集合中存放任何类的对象而不受限制,但是切记在使 用集合成员之前必须对它重新造型。
14
Vector类举例1
接上页:
public class CatsAndDogs{ public static void main(String[] args){ Vector cats = new Vector(); for(int i=0; i<7; i++) cats.addElement(new Cat(i)); cats.addElement(new Dog(7)); for(int i=0; i<cats.size(); i++) ((Cat)cats.elementAt(i)).print(); } Object对象 } Cat对象
Vecto百度文库类举例2
修改Vector例1,用Enumeration。 import java.util.Vector; import java.util.Enumeration; class Cat { private int catNumber; Cat(int i){catNumber = i;} void print(){System.out.println("Cat #"+catNumber);} } class Dog { private int dogNumber; Dog(int i){dogNumber = i;} void print(){System.out.println("Dog #"+dogNumber);} } 转下页
例1:演示对象数组用法:
Honeybee[] c = new Honeybee[4]; for(int i=0; i<c.length; i++) c[i]=new Honeybee(i); System.out.println(c.length); //输出4 Honeybee[] d= { new Honeybee(100), new Honeybee(200), new Honeybee(300)}; System.out.println(d.length); //输出3 a = d; //数组之间赋值 System.out.println(a.length); //输出3 for(int i=0; i<a.length; i++) System.out.println(a[i]); //输出100,200,300 a = new Honeybee[] { new Honeybee(1), new Honeybee(2) }; System.out.println(a.length); //输出2 } }
Vector类举例2
接上页: public class CatsAndDogs{ public static void main(String[] args){ Vector cats = new Vector(); for(int i=0; i<7; i++) cats.addElement(new Cat(i)); cats.addElement(new Dog(7)); // for(int i=0; i<cats.size(); i++) // ((Cat)cats.elementAt(i)).print(); Enumeration e = cats.elements(); while(e.hasMoreElements()) ((Cat) e.nextElement()).print(); } }
集合类的使用:
Java的集合类包含在java.util包中。 import java.util.*;
2
第六章 基础类库和工具类库
集合类概述
集合类特点一:
只容纳对象。这一点和数组不同,数组可以容纳 基本数据类型数据和对象。 如果集合类中想使用基本数据类型,又想利用 集合类的灵活性,可以把基本数据类型数据封装 成该数据类型的对象,然后放入集合中处理。
4
第六章 基础类库和工具类库
集合类概述
下面根据JDK版本分两部分介绍Java的 集合类。
第一部分:JDK1.1版本中的集合类。 第二部分:JDK1.2以后版本中的集合类。
5
第六章 基础类库和工具类库
数组
数组
基本数据类型数组 对象数组
举例说明数组的定义、使用。
6
例1:演示对象数组用法:
class Honeybee{ int value; Honeybee(int v){ value=v; } public String toString(){ return new Integer(value).toString(); } } public class ArraySize{ public static void main(String[] args){ Honeybee[] a; /* System.out.println(a.length); 产生编译错误,因为a没有定义大小*/ Honeybee b[] = new Honeybee[5]; System.out.println(b.length); //输出5 for(int i=0; i<b.length; i++) System.out.println(b[i]); //输出5个null
第六章 基础类库和工具类库
旧的集合类
Vector Stack Hashtable
11
第六章 基础类库和工具类库
Vector类
Vector类实现了长度可变的数组。 Vector中只能存放对象。 Vector的元素通过下标进行访问。 Vector类关键属性:
capacity表示集合最多能容纳的元素个数。 capacityIncrement表示每次增加多少容量。 size表示集合当前元素个数。 Vector v = new Vector(100)
13
第六章 基础类库和工具类库
Vector类举例1
import java.util.Vector; class Cat { private int catNumber; Cat(int i){catNumber = i;} void print(){System.out.println("Cat #"+catNumber);} } class Dog { private int dogNumber; Dog(int i){dogNumber = i;} void print(){System.out.println("Dog #"+dogNumber);} } 转下页
第六章 基础类库和工具类库
Hashtable类
Hashtable通过键来查找元素。 Hashtable用一个特殊的值来确定键,名为 hashcode hashcode(散列码)。所有对象都有一个 散列码,可以通过Object 类的hashCode() 方法获得。
20
第六章 基础类库和工具类库
Hashtable举例