zoukankan      html  css  js  c++  java
  • 201771010125王瑜《面向对象程序设计(Java)》第十一周学习总结

                                                                                                     第十一周学习总结

    一、理论部分

    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,结合程序运行结果理解程序;

    结果:

    三  总结部分

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

  • 相关阅读:
    Java中String与byte[]的转换
    移动端界面设计之尺寸篇(更新)
    移动端开发必晓
    sublime 之 vitage/emmet
    Sublime Text3工具的安装、破解、VIM功能vintage插件教程
    Sublime Text 3 快捷键总结
    iPhone Safari下iframe不显示滚动条无法滚动的解决方法
    名片设计尺寸及名片设计的注意事项
    转:『引』最全前端资源汇集
    (转)详解css3弹性盒模型(Flexbox)
  • 原文地址:https://www.cnblogs.com/wy-201771010125/p/9942358.html
Copyright © 2011-2022 走看看