201874040116-李鑫《面向对象程序设计(java)》第十二周学习总结
内容 |
|
这个作业属于哪个课程 |
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:
实验总结:
集合让我们能更轻松的处理数据,图像程序设计让我们能作出美观的界面,但实际的做到这些还需要更多的练习与学习。