201771010125王瑜《面向对象程序设计(java)》第十一周学习总结(代码片段)

wy-201771010125 wy-201771010125     2023-01-17     356

关键词:

                                                                                                 第十一周学习总结

 

一、理论部分

1.Collection和Map是Java集合框架的根接口

2.Set无序不允许元素重复

3.HashSet (无序)     TreeSet (有序)

4.List有序且允许元素重复

5.Map也属于集合系统,但和Collection接口没关系。Map是key对value的映射集合,其中key列就是一个集合。key不能重复,但是value可以重复

6. HashMap (无序)     TreeMap (有序)     WeakHashMap     Hashtable (无序,线程安全) 6.SortedSet和SortedMap接口对元素按指定规则排序,SortedMap是对key列进行排序。

7.ArrayList和Vector区别:

 (1)ArrayList和Vector都实现了List接口,都是通过数组实现的   

 (2)ArrayList是非线程安全的, Vector是线程安全的   

 (3)List第一次创建的时候,会有一个初始大小,随着不断向List中增加元素,当List 认为容量不够的时候就会进行扩容。ArrayList增长原来的50%,Vector缺省情况下自动增长原来一倍的数组长度

8.集合类的特点

(1)只容纳对象

(2)集合类容纳的对象都是Object类的实例,一旦把一个对象置入集合类中,它的类信息将丢失,这样设计的目的是为了集合类的通用性

9.Stack类是Vector的子类
10.Hashtable通过键来查找元素。Hashtable用散列码(hashcode)来确定键。所有对象都有一个散列码,可以通过Object类的hashCode()方法获得

 

二、实验部分

1、实验目的与要求

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

(2) 了解java集合框架体系组成;

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

(4) 了解HashSet类、TreeSet类的用途及常用API。

(5)了解HashMap、TreeMap两个类的用途及常用API;

(6) 结对编程(Pair programming)练习,体验程序开发中的两人合作。

2、实验内容和步骤

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

测试程序1:

l 使用JDK命令运行编辑、运行以下三个示例程序

//示例程序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);

 

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();

//示例程序2

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());

//示例程序3

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);

示例一结果:

技术分享图片

由结果知道示例一代码不合适,改后为:

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);
    


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++)
            if(cats.elementAt(i) instanceof Cat)  //instanceof判断类型是否匹配
            ((Cat) cats.elementAt(i)).print();
    
            else 
                ((Dog) cats.elementAt(i)).print();
            
 
 

改后结果为:

技术分享图片

示例2结果:

技术分享图片

示例3结果:

技术分享图片

测试程序2:

使用JDK命令编辑运行ArrayListDemo和LinkedListDemo两个程序,结合程序运行结果理解程序;

结果:

import java.util.*;

public class ArrayListDemo 
    public static void main(String[] argv) 
        ArrayList al = new ArrayList();
        // 向ArrayList添加很多元素…
        al.add(new Integer(11));
        al.add(new Integer(12));
        al.add(new Integer(13));//整型包装器类对象
        al.add(new String("hello"));//字符串类对象,说明集合中的元素的类型可以不同
        // 首先使用for循环将它们打印出来。
        System.out.println("Retrieving by index:");
        for (int i = 0; i < al.size(); i++) 
            System.out.println("Element " + i + " = " + al.get(i));
        
    
技术分享图片

技术分享图片

添加一个输出一个集合对象的结果:

技术分享图片

结果:

技术分享图片

在Elipse环境下编辑运行调试教材360页程序9-1,结合程序运行结果理解程序;

掌握ArrayList、LinkList两个类的用途及常用API


技术分享图片

测试程序3:

运行SetDemo程序,结合运行结果理解程序;

结果:

技术分享图片

在Elipse环境下调试教材365页程序9-2,结合运行结果理解程序;了解HashSet类的用途及常用API。

在Elipse环境下调试教材367页-368程序9-3、9-4,结合程序运行结果理解程序;了解TreeSet类的用途及常用API。

结果:

技术分享图片

测试程序4:

使用JDK命令运行HashMapDemo程序,结合程序运行结果理解程序;

结果:

技术分享图片

了解HashMap、TreeMap两个类的用途及常用API。在Elipse环境下调试教材373页程序9-6,结合程序运行结果理解程序;

结果:

技术分享图片

三  总结部分

本章学习中,我没有好好学习,对本章知识点还有许多不熟练的,在接下来的时间里我会再总结学习的


201771010125王瑜《面向对象程序设计(java)》第四周学习总结

实验四类与对象的定义及使用 第一部分:理论知识学习1.类与对象概念 (1)类是构造对象的模板或蓝图,由类构造对象的过程称为创建类的实例。 (2)对象:即数据,对象有三个特性,行为、状态、标识。2.类与对象的关... 查看详情

201771010125王瑜《面向对象程序设计(java)》第七周学习总结(代码片段)

                                 &n 查看详情

201771010125王瑜《面向对象程序设计(java)》第十一周学习总结(代码片段)

                                 &n 查看详情

201771010125王瑜《面向对象程序设计(java)》第九周学习总结(代码片段)

                             实验九  异常.断言与日志第一部分:理论部分一:(1)异常:在程序的执行过程中所发生的异常事件,它中断指令的正常执行。常见的几种错误:A... 查看详情

201771010125王瑜《面向对象程序设计(java)》第八周学习总结(代码片段)

实验六接口的定义与使用 一、理论部分该章学习的主要内容便有接口,回调,对象克隆,lambda表达式,内部类以及代理1、接口:(1)Java为了克服单继承的缺点,Java使用了接口,一个类可以实现一个或多个接口(2)在Java程... 查看详情

201771010125王瑜《面向对象程序设计(java)》第十七周学习总结(代码片段)

                201771010125王瑜《面向对象程序设计(java)》第十七周学习总结一理论知识1.多线程:多线程是进程执行过程中产生的多条执行线索。2.进程:线程是比进程执行更小的单位。线程不能独立存在... 查看详情

08-面向对象----j

一面向对象的程序设计的由来请参考:http://www.cnblogs.com/linhaifeng/articles/6428835.html二什么是面向对象的程序设计及为什么要有它面向过程的程序设计的核心是过程,过程即解决问题的步骤,面向过程的设计就好比精心设计好一条... 查看详情

2020面向对象设计与构造第三单元博客总结(代码片段)

面向对象设计与构造第三单元总结一、JML规格化设计JML,全称TheJavaModelingLanguage,是用于对Java程序进行规格化描述的注释性质语言。笔者在本文总结了常见的JML语法描述。1.注释结构在注释行或注释块中,以@开头的行被认作JML注... 查看详情

面向对象

老王和隔壁的美女猜数字,一共有四次机会,猜到了就有特殊奖励publicclasstest{publicstaticvoidmain(String[]args){inti=(int)(Math.random()*10);Scannerinput=newScanner(System.in);for(intj=0;j<4;j++){System.out.println("老王第"+(j+1)+"次 查看详情

201771010126王燕《面向对象程序设计(java)》第二周学习总结

201771010126王燕《面向对象程序设计(java)》第二周学习总结一.理论知识学习部分3.1j简单的java应用程序标识符由字母、下划线、美元符号和数字组成,且第一个符号不能为数字。标识符可用作:类名、变量名、方法名、数组名... 查看详情

201823072019-2020-1《数据结构与面向对象程序设计》实验1报告

课程:《程序设计与数据结构》班级:1823姓名:王美皓学号:20182322实验教师:王美皓实验日期:2019年9月9日必修/选修:必修1.实验内容基于命令行和IDE(IntelljIDEA简易教程](http://www.cnblogs.com/rocedu/p/4421202.html)进行简单的Java程... 查看详情

杨其菊201771010134《面向对象程序设计(java)》第三周学习总结(代码片段)

  《面向对象程序设计(Java)》第三周学习总结第一部分:理论知识 这周课程没有新进度,由于感觉对基础语法的不熟悉,复习了一遍前三章的细碎知识,学到一些之前不知道的原理: 1.计算机高级语言按程序的... 查看详情

c++面向对象的主要体现是啥?

...得对我有用的话,我会再追加分。)C++面向对象是表现在程序设计的过程上,它是突破了C的结构化设计而出现的完全以实际问题为入手点的。C++的面向对象3个特性:1.封装。2.继承。3.多态。尤其重要的是,它采用类的设计,杜... 查看详情

徐思201771010132《面向对象程序设计(java)》第十二周学习总结(代码片段)

一、理论知识部分Java的抽象窗口工具箱(AbstractWindowToolkit,AWT)包含在java.awt包中,它提供了许多用来设计GUI的组件类和容器类。大部分AWT组件都有其Swing的等价组件,Swing组件的名字一般是在AWT组件名前面添加一个字母“J”。通... 查看详情

201771010110孔维滢《面向对象程序设计(java)》第十二周学习总结

理论知识部分1.Java的抽象窗口工具箱(AbstractWindowToolkit,AWT)包含在java.awt包中,它提供了许多用来设计GUI的组件类和容器类。2.Swing用户界面库是非基于对等体的GUI工具箱。Swing类库被放在javax.swing包里。3.大部分AWT组件都有其Swing... 查看详情

马凯军201771010116《面向对象与程序设计java》第十二周学习总结(代码片段)

一、理论与知识学习部分Java的抽象窗口工具箱(AbstractWindowToolkit,AWT)包含在java.awt包中,它提供了许多用来设计GUI的组件类和容器类。大部分AWT组件都有其Swing的等价组件,Swing组件的名字一般是在AWT组件名前面添加一个字母“J... 查看详情

201771010134杨其菊《面向对象程序设计java》第十二周学习总结(代码片段)

...bsp; 内容概要: AWT与Swing简介;框架的创建;图形程序设计; 显示图像;1.AWT组件:2.Swing组件层次关系3.AWT与Swing的关系:大部分AWT组件都有其Swing的等价组件; Swing组件的名字一般是在AWT组件名前面添加一个字母“J 查看详情

面向对象程序设计介绍以及面向对象的基本特征

  面向对象的程序设计(ObjectOrientedProgramming,OOP)方法是目前比较流行的程序设计方法,和面向过程的程序设计比,它更符合人类的自然思维方式。在面向过程程序设计中,程序=数据+算法,数据和对数据的操作是分离的,如... 查看详情