201871010111-刘佳华《面向对象程序设计(java)》第十二周学习总结

实验十   集合与GUI初步

实验时间 2019-11-14

第一部分:基础知识总结

  • 第九章知识总结 

1.栈(Stack)也是一种特殊的线性表,是一种后进先出 (LIFO)的结构。

栈是限定仅在表尾进行插入和删除运算的线性表,表尾称为栈顶(top),表头称为(bottom)。

栈的物理存储可以用顺序存储结构,也可以用链式存储结构。

2.队列(Queue)是限定所有的插入只能在表的一端进行 ,而所有的删除都在表的另一端进行的线性表。

表中允许插入的一端称为队尾(Rear),允许删除的一端称为队头(Front)。

队列的操作是按先进先出(FIFO)的原则进行的。队列的物理存储可以用顺序存储结构,也可以用链式存储结构。

3.一般将数据结构分为两大类:线性数据结构和非线性数据结构。

线性数据结构:线性表、栈、队列、串、数组和文件。

非线性数据结构:树和图。线性表按其存储结构可分为顺序表和链表;用顺序存储结构存储的线性表称为顺序表;顺序表将线性表中的数据元素依次存放在某个存储区域中。

一维数组就是用顺序方式存储的线性表。用链式存储结构存储的线性表称为链表。

4.集合框架:JAVA集合类库的统一架构。

集合类的作用:Java的集合类提供了一些基本数据结构的支持。

集合类的使用: Java的集合类包含在java.util包中。

集合类的特点一:只容纳对象

注意:数组可以容纳基本数据类型数据和对象。如果集合类中想使用基本数据类型,又想利用集合类的灵活性,可以把基本数据类型数据封装成该数据类型的包装器对象,然后放入集合中处理。特点二:集合类容纳的对象都是Object类的实例,一旦把一个对象置入集合类中,它的类信息将丢失,这样设计的目的是为了集合类的通用性。因为Object类是所有类的祖先,所以可以在这些集合中存放任何类的对象而不受限制,但在使用集合成员之前必须对它重新造型。

5.JAVA的集合框架实现对各种数据结构的封装,以降低对数据管理与处理的难度。所谓框架就是一个类库的集合,框架中包含很多超类,编程者创建这些超类的子类可较方便的设计设计程序所需的类。

6.Map接口用来维持很多“键-值”对,以便通过键来查找相应的值。

HashMap基于散列表实现(替代Hashtable)。

TreeMap在一个二叉树的基础上实现(map)是一个存储关键字和值的关联或关键字/值对的对象。给定一个关键字,可以得到它的值。关键字和值都是对象。关键字必须是唯一的。但值是可以被复制的。Map接口映射唯一关键字到值。

关键字(key)是以后用于检索值的对象。给定一个关键字和一个值,可以存储这个值到一个Map对象中。当这个值被存储以后,就可以使用它的关键字来检索它,Map循环使用两个基本操作:get( )和put( )。使用 put( )方法可以将一个指定了关键字和值的值加入映射。为了得到值可以通过将关键字作为参数来调用 get( )方法。调用返回该值。

Map接口的实现类主要有HashMap,TreeMap,Hashtable,Properties。HashMap对key进行散TreeMap按照key进行排序。和Set类似,HashMap的速度通常都比TreeMap快,只有在需要排序的功能的时候,才使用TreeMap。

7.Vector类类似长度可变的数组。Vector中只能存放对象Vector的元素通过下标进行访问

Vector类关键属性:capacity表示集合最多能容纳的元素个数。capacityIncrement表示每次增加多少容量。size表示集合当前元素个数。

Stack类是Vector的子类。Stack类描述堆栈数据结构,即LIFO

Hashtable通过键来查找元素。Hashtable用散列码(hashcode)来确定键。

所有对象都有一个散列码,可以通过Object类的hashCode()方法获得。

8.集合框架中的基本接口:Collection:集合层次中的根接口,JDK未提供这个接口的直接实现类。

Set:不能包含重复的元素。对象可能不是按存放的次序存放,也就是说不能像数组一样按索引的方式进行访问,SortedSet是一个按照升序排列元素的Set。List的明显特征是它的元素都有一个确定的顺序。实现它的类有ArrayList和LinkedList。ArrayList中的元素在内存中是顺序存储的。LinkedList中的元素在内存中是以链表方式存储的。

TreeSet是一个有序集合,TreeSet中元素将照升序排列,缺省是按照自然顺序进行排列,意味着TreeSet中元素要实现Comparable接口。可以在构造TreeSet对象时,传递实现了 Comparator接口的比较器对象。HashSet是基于Hash算法实现的,其性能通常都优于TreeSet。通常使用HashSet,需要排序的功能时,使用TreeSet。

 201871010111-刘佳华《面向对象程序设计(java)》第十二周学习总结

 

  • 第十章知识总结(GUI初步)

1.Java的抽象口工具箱( Abstract WindowToolkit, AWT)包含在java.awt包中,它提供了许多用来设计GUI的组件类和容器类。

2.AWT库处理用户界面元素的方法:把图形元素的创建和行为委托给本地GUI工具箱进行处理。

3.Swing用户界面库是非基于对等体的GUI工具箱。Swing具有更丰富并且更方便的用户界面元素集合。Swing对底层平台的依赖很少,因此与平台相关的bug很少。Swing会带来交叉平台上的统一视觉体验。Swing类库被放在 javax.swing 包里。

4.大部分AWT组件都有其 Swing的等价组件。Swing组件的名字一般是在AWT组件名前面添加一个字母“J”,如:JButton,JFrame,JPanel等。

5.通常把由Component类的子类或间接子类创建的对象称为一个组件

6.Swing 组件层次关系

 201871010111-刘佳华《面向对象程序设计(java)》第十二周学习总结

7..组件类的常用API

 java.awt.Component 1.0

– boolean isVisible()  检查组件是否可见

– void setVisible(boolean b)  设置组件可见

– void setSize(int width,int height)  把组件缩放到指定宽度和高度

– void setBounds(int x,int y,int width,int height)  移动并缩放组件

– Dimension getSize()  得到组件的大小

– void setSize(Dimension d) 把组件缩放到指定的大小

– void setLocation(int x,int y)

8.容器是Java中能容纳和排列组件的组件。常用的容器是框架(Frame,JFrame)。

Container类提供了一个方法add(),用来在容器类 组件对象中添加其他组件。

容器本身也是一个组件,可以把一个容器添加到 另一个容器里,实现容器嵌套。

框架定位:常用Component类的setLocation和setBounds方法。常用属性:Title:框架标题;IconImage:框架图标。

确定框架大小:通过调用Toolkit类的方法来得到屏幕尺寸信息。

Jframe的结构:它由根面板、层级面板、玻璃面板和内容面板(content pane)四层面板构成。

Swing程序员最关心的是内容面板,也称为内容窗格。

在AWT中可调用add()方法把组件直接添加到AWT Frame中,在Swing中组件则添加到内容窗格里。

其中内容窗格是用来添加组件的,添加代码如下:Container contentPane = getContentPane(); Component c=…; contentPane.add(c);

用户也可以自行创建一个组件类,并在组件上进行绘制,此时需要重载paintComponent()。用户的自建组件也可添加到内容窗格里。

paintComponent(Graphics g)定义在JComponent类中,该方法在窗口需要重新绘图时(如扩大窗口或极小化窗口),被系统自动调用.

paintComponent()方法被调用时,系统就自动产生一个Graphics类型的参数,传递给paintComponent方法中的参数g。

第二部分:实验内容和步骤

1、实验目的与要求

(1) 掌握Vetor、Stack、Hashtable三个类的用途及常用API;

(2) 掌握ArrayList、LinkList两个类的用途及常用API。

(3) 掌握Java GUI中框架创建及属性设置中常用类的API;

(4) 应用结对编程(Pair programming),体验程序开发中的两人合作。

 

实验1 导入第9章示例程序,测试程序并进行代码注释。

测试程序1:

使用JDK命令运行编辑、运行以下三个示例程序,结合运行结果理解程序;

掌握VetorStackHashtable三个类的用途及常用API 

 1 package Demo;
 2 //Vector类举例
 3 import java.util.Vector;
 4 
 5 class Cat{
 6     private int catNumber;
 7     Cat(int i){
 8         catNumber =i;
 9     }
10     void print() {
11         System.out.println("Cat#"+catNumber);
12     }
13     
14 }
15 public class Cats {
16 
17     public static void main(String[] args) {
18         
19         Vector <Cat> cats=new Vector<Cat>();
20         for(int i=0;i<7;i++) {
21             cats.addElement(new Cat(i));//添加新的Cat对象作为Vector的元素
22         }
23         for(int i=0;i<cats.size();i++) {
24             (cats.elementAt(i)).print();
25             //System.out.println(cats.elementAt(i));
26         }
27     }
28 
29 }
Cats

相关文章:

  • 2022-02-09
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-02-01
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案