201874040116-李鑫《面向对象程序设计(java)》第十二周学习总结

 

 

内容

这个作业属于哪个课程

https://www.cnblogs.com/nwnu-daizh/

这个作业的要求在哪里

https://www.cnblogs.com/nwnu-daizh/p/11867214.html

作业学习目标

(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

 

 

 实验总结:

  集合让我们能更轻松的处理数据,图像程序设计让我们能作出美观的界面,但实际的做到这些还需要更多的练习与学习。

 

 

 

              

 

posted on 2019-11-17 20:45  bqqhmm  阅读(194)  评论(1编辑  收藏  举报

导航