内容 |
|
这个作业属于哪个课程 |
https://www.cnblogs.com/nwnu-daizh/ |
这个作业的要求在哪里 |
|
作业学习目标 |
(1) 掌握Vetor、Stack、Hashtable三个类的用途及常用API; (2) 掌握ArrayList、LinkList两个类的用途及常用API; (3) 了解java集合框架体系组成; (4) 掌握Java GUI中框架创建及属性设置中常用类的API; (5) 了解Java GUI中2D图形绘制常用类的API; |
第一部分:总结第九章、第十章理论知识
第九章:
1.java集合框架
1)Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。Collection 接口又有 3 种子类型,List、Set 和 Queue,再下面是一些抽象类,最后是具体实现类,常用的有 ArrayList、LinkedList、HashSet、LinkedHashSet、HashMap、LinkedHashMap 等等。
2)集合框架是一个用来代表和操纵集合的统一架构。所有的集合框架都包含如下内容:
-
-
-
接口:是代表集合的抽象数据类型。例如 Collection、List、Set、Map 等。之所以定义多个接口,是为了以不同的方式操作集合对象
-
实现(类):是集合接口的具体实现。从本质上讲,它们是可重复使用的数据结构,例如:ArrayList、LinkedList、HashSet、HashMap。
-
算法:是实现集合接口的对象里的方法执行的一些有用的计算,例如:搜索和排序。这些算法被称为多态,那是因为相同的方法可以在相似的接口上有着不同的实现。
-
-
3)集合类的基本接口是 Collection 接口。该接口有 添加元素的add方法 和 返回一个实现了Iterator接口对象的Iterator方法。
4)迭代器:Iterator接口包含的方法使它拥有遍历集合元素的功能。 编译器将 for each 循环翻译为带有迭代器的循环。
5)泛型实用方法: 由于Collection与Iterator 都是泛型接口,可以编写任意集合类型的实用方法。
2.具体的集合
1)链表(linked list):每个对象被存放在独立的结点中,并且每个结点还存放着下个结点的引用。java中,所有链表实际上是双向链表。
2)数组列表(ArrayList):实现了List接口。封装了一个动态再分配的对象数组。
3)散列集(hash collection):可以通过使每个对象有唯一的散列码以快速查找所需要的对象。
4)树集:添加元素慢,查找元素快。
5)队列与双端队列:可以让人们有效的在头部和尾部同时添加和删除元素。
6)优先级队列(priority queue):元素可以按任意顺序插入,但按照排序的顺序进行检索。它使用了 堆(heap).
3.映射(map)
映射用来存放 键/值对。通过键就能快速查找到值。
第十章:
AWT (Abstract Window Toolkit) :抽象窗口工具箱。用于基本GUI程序的类库。
Swing 基于AWT的功能更强的用户界面组件。
AWT 与 Swing 的混用会导致问题。
1.创建框架(frame)
1)Frame类 (AWT) 和 JFrame类(Swing)用于描述框架。
2)框架的setVisible方法会显示框架。
3)框架定位
1. setLocation 和 setBounds 方法用于设置框架的位置
2. setIconImage 用于告诉窗口系统在标题栏,任务切换窗口等位置显示哪个图标。
3. setTitle 用于改变标题栏的文字。
4. setResizable 利用一个boolean值确定框架的大小是否允许用户改变。
第二部分:实验部分
实验1:
测试程序1:
import java.util.Vector;
class Cat {
private int catNumber;
Cat(int i) {
catNumber = i;
}
void print() {
System.out.println("Cat #" + catNumber);
}
}
public class Cats{
public static void main(String[] args){
Vector<Cat> cats= new Vector<Cat>(); //建立存储 Cat类对象 的 Vector集合 cats
for(int i=0; i<7; i++) //往集合cats内添加7个元素
cats.addElement(new Cat(i));
for(int i=0; i<cats.size(); i++) //让集合cats中的每个对象调用print方法
(cats.elementAt(i)).print();
}
}
import java.util.*;
public class Stacks
{
static String[] months={"金","银","铜","铁"}; //静态字符串数组 months
public static void main(String[] args){
Stack<String> stk = new Stack<String> (); //建立存储对象为字符串的栈stk
for(int i=0; i<months.length; i++)
stk.push(months[i]); //将months中的元素入栈
System.out.println(stk); //打印stk中的所有元素
System.out.println("element 2=" + stk.elementAt(2));//打印栈stk中序号为2的元素
while(!stk.empty())
System.out.println(stk.pop()); //按出栈顺序打印元素
}
}
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));//产生0到19的随机数
if(ht.containsKey(r)) //记录每个数出现的次数
((Counter)ht.get(r)).i++;
else
ht.put(r, new Counter());
}
System.out.println(ht);
}
}
测试程序2:
实验2:
测试程序1:
测试程序2:
测试程序3:
实验总结:
集合让我们能更轻松的处理数据,图像程序设计让我们能作出美观的界面,但实际的做到这些还需要更多的练习与学习。
来源:oschina
链接:https://my.oschina.net/u/4379419/blog/4175484