实验十一   集合

实验时间 2018-11-8

1、实验目的与要求

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

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

(3) 掌握ArrayListLinkList两个类的用途及常用API

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

(5)了解HashMapTreeMap两个类的用途及常用API

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

2、实验内容和步骤

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

测试程序1:

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

掌握Vetor、Stack、Hashtable三个类的用途及常用API。

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

      }

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

实验结果1

 李清华201772020113《面向对象程序设计(java)》第十一周学习总结

实验结果2

李清华201772020113《面向对象程序设计(java)》第十一周学习总结

 实验结果3

 李清华201772020113《面向对象程序设计(java)》第十一周学习总结

 

测试程序2:

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

import java.util.*;

 

public class ArrayListDemo {

public static void main(String[] argv) {

       ArrayList al = new ArrayList();

       // Add lots of elements to the ArrayList...

       al.add(new Integer(11));

       al.add(new Integer(12));

       al.add(new Integer(13));

       al.add(new String("hello"));

       // First print them out using a for loop.

       System.out.println("Retrieving by index:");

       for (int i = 0; i < al.size(); i++) {

             System.out.println("Element " + i + " = " + al.get(i));

       }

}

}

import java.util.*;

public class LinkedListDemo {

    public static void main(String[] argv) {

        LinkedList l = new LinkedList();

        l.add(new Object());

        l.add("Hello");

        l.add("zhangsan");

        ListIterator li = l.listIterator(0);

        while (li.hasNext())

            System.out.println(li.next());

        if (l.indexOf("Hello") < 0)  

            System.err.println("Lookup does not work");

        else

            System.err.println("Lookup works");

   }

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

李清华201772020113《面向对象程序设计(java)》第十一周学习总结

李清华201772020113《面向对象程序设计(java)》第十一周学习总结

 

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

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

 

package linkedList;

import java.util.*;

/**
 * This program demonstrates operations on linked lists.
 * @version 1.11 2012-01-26
 * @author Cay Horstmann
 */
public class LinkedListTest
{
   public static void main(String[] args)
   {
      List<String> a = new LinkedList<>();
      a.add("Amy");
      a.add("Carl");
      a.add("Erica");

      List<String> b = new LinkedList<>();
      b.add("Bob");
      b.add("Doug");
      b.add("Frances");
      b.add("Gloria");

      // merge the words from b into a

      ListIterator<String> aIter = a.listIterator();
      Iterator<String> bIter = b.iterator();

      while (bIter.hasNext())
      {
         if (aIter.hasNext()) aIter.next();
         aIter.add(bIter.next());
      }

      System.out.println(a);

      // remove every second word from b

      bIter = b.iterator();
      while (bIter.hasNext())
      {
         bIter.next(); // skip one element
         if (bIter.hasNext())
         {
            bIter.next(); // skip next element
            bIter.remove(); // remove that element
         }
      }

      System.out.println(b);

      // bulk operation: remove all words in b from a

      a.removeAll(b);

      System.out.println(a);
   }
}

 

李清华201772020113《面向对象程序设计(java)》第十一周学习总结

 

 

测试程序3:

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

import java.util.*;

public class SetDemo {

    public static void main(String[] argv) {

        HashSet h = new HashSet(); //也可以 Set h=new HashSet()

        h.add("One");

        h.add("Two");

        h.add("One"); // DUPLICATE

        h.add("Three");

        Iterator it = h.iterator();

        while (it.hasNext()) {

             System.out.println(it.next());

        }

    }

}

 

 

 

 

 

 

 

 

 

 

 

  李清华201772020113《面向对象程序设计(java)》第十一周学习总结

 

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

 1 package set;
 2 
 3 import java.util.*;
 4 
 5 /**
 6  * This program uses a set to print all unique words in System.in.
 7  * @version 1.12 2015-06-21
 8  * @author Cay Horstmann
 9  */
10 public class SetTest
11 {
12    public static void main(String[] args)
13    {
14       Set<String> words = new HashSet<>(); // HashSet implements Set
15       long totalTime = 0;
16 
17       try (Scanner in = new Scanner(System.in))
18       {
19          while (in.hasNext())
20          {
21             String word = in.next();
22             long callTime = System.currentTimeMillis();
23             words.add(word);
24             callTime = System.currentTimeMillis() - callTime;
25             totalTime += callTime;
26          }
27       }
28 
29       Iterator<String> iter = words.iterator();
30       for (int i = 1; i <= 20 && iter.hasNext(); i++)
31          System.out.println(iter.next());
32       System.out.println(". . .");
33       System.out.println(words.size() + " distinct words. " + totalTime + " milliseconds.");
34    }
35 }
View Code

相关文章:

  • 2022-01-22
  • 2021-07-13
  • 2021-09-12
  • 2022-02-26
  • 2022-03-03
  • 2021-08-01
  • 2021-06-27
  • 2022-12-23
猜你喜欢
  • 2021-06-27
  • 2021-09-18
  • 2022-01-11
  • 2021-09-21
  • 2021-05-18
  • 2021-09-02
  • 2021-10-06
相关资源
相似解决方案