文章目录

  • 题目一
  • 题目二
  • 题目三
  • 题目四


题目一

(一)自定义泛型类MyStack,模拟数据结构中的“栈”,并测试。该类中至少包含以下方法:
(1)压栈的方法push()。
(2)弹栈的方法pop()。
(3)获取栈顶元素的方法peek()。
(4)获取栈中元素的个数的方法size()。
源程序:

import java.util.ArrayList;

public class TestStack {
    public static void main(String[] args) {
        MyStack<String> ms = new MyStack<>();
        ms.push("张三");
        ms.push("李四");
        ms.push("王五");
        ms.push("赵六");
        System.out.println("栈顶元素:"+ms.peek());
        System.out.println("栈空间大小:"+ms.getSize());
        ms.pop();
        ms.pop();
        System.out.println("栈顶元素:"+ms.peek());
        System.out.println("栈空间大小:"+ms.getSize());
    }

}

class MyStack<T> {
    ArrayList<T> arr = new ArrayList<>();

    //压栈的方法push()
    public void push(T data) {
        arr.add(data);
    }

    //弹栈的方法pop()
    public void pop() {
        arr.remove(arr.size() - 1);
    }

    //获取栈顶元素的方法peek()
    public T peek() {
        T data = arr.get(arr.size() - 1);
        return data;
    }

    //获取栈中元素的个数的方法size()
    public int getSize() {
        return arr.size();
    }
}

测试结果截图:

java 泛型集合 类型 java泛型与集合实验报告_源程序

题目二

(二)有下面的ArrayList,并使用foreach和迭代器遍历此链表。

java 泛型集合 类型 java泛型与集合实验报告_源程序_02


使用foreach遍历链表的源程序:

import java.util.ArrayList;
import java.util.Iterator;
import java.util.Vector;

public class Test02 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("java");
        list.add("python");
        list.add("c");
        list.add("c++");
        list.add("php");
        list.add("oc");
        //方法一 foreach
        for (String str : list
        ) {
            System.out.print(str + " ");
        }
    }
}

运行结果截图:

java 泛型集合 类型 java泛型与集合实验报告_java 泛型集合 类型_03


使用迭代器遍历链表的源程序:

import java.util.ArrayList;
import java.util.Iterator;
import java.util.Vector;

public class Test02 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("java");
        list.add("python");
        list.add("c");
        list.add("c++");
        list.add("php");
        list.add("oc");     
        //方法二 迭代器
        System.out.println();
        Iterator<String> it = list.iterator();
        while (it.hasNext()){
            System.out.print(it.next()+" ");
        }
    }
}

运行结果截图:

java 泛型集合 类型 java泛型与集合实验报告_java 泛型集合 类型_04

题目三

(三)有下面的Map集合,使用两种方法遍历。

Map:

java 泛型集合 类型 java泛型与集合实验报告_java_05


方法一源程序:

import java.util.Set;
import java.util.TreeMap;

public class Test03 {
    public static void main(String[] args) {

        TreeMap<Integer, String> map = new TreeMap<>();
        map.put(1, "Java");
        map.put(2, "Python");
        map.put(3, "C");
        map.put(4, "C++");
        map.put(5, "PHP");
        //方法一 keySet()
        Set<Integer> keys = map.keySet();
        for (Integer key : keys
        ) {
            System.out.println(key+":" +map.get(key));
        }
    }
}

运行结果截图:

java 泛型集合 类型 java泛型与集合实验报告_源程序_06


方法二源程序:

import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

public class Test03 {
    public static void main(String[] args) {

        TreeMap<Integer, String> map = new TreeMap<>();
        map.put(1, "Java");
        map.put(2, "Python");
        map.put(3, "C");
        map.put(4, "C++");
        map.put(5, "PHP");
        //方法二: entrySet()
        Set<Map.Entry<Integer, String>> entries = map.entrySet();
        for (Map.Entry<Integer, String> entry : entries){
            System.out.println(entry.getKey() + ":" + entry.getValue());
        }
    }
}

运行结果截图:

java 泛型集合 类型 java泛型与集合实验报告_源程序_07

题目四

(四)双色球共有49个数字。其中红色球33个(数字从1-33),篮色球16个(数字从1-16)。编写一个程序,实现自动选号,每次选出一组号码(6个红色球和1个蓝色球)。
源程序:

import java.util.HashSet;
import java.util.Random;
import java.util.Set;

public class Test04 {
    public static Set<Integer> getNums(int n, int count) {
        HashSet<Integer> nums = new HashSet<>();
        Random r = new Random();
        while (true) {
            nums.add(r.nextInt(n) + 1);
            if (nums.size() == count) {
                break;
            }
        }
        return nums;
    }

    public static void main(String[] args) {
        System.out.println("红色球"+getNums(32,6));
        System.out.println("蓝色球"+getNums(32,6));
        System.out.println("绿色球"+getNums(32,6));
    }
}

运行结果截图:

java 泛型集合 类型 java泛型与集合实验报告_java 泛型集合 类型_08

收获:
1、 泛型、学会自定义泛型的定义以及应用。
2、通过arraylist模拟栈这种先进后出的数据结构,实现pop(),push(),peek(),getSize()等方法,并进行测试。
3、学会使用foreach和vector迭代器迭代输出数组中的元素。
4、泛型的好处1.类型安全2.能够避免在强转时出现问题
5、学会使用map里的keySet()和entrySet()方法。
6、了解掌握HashSet以及TreeSet的相关属性及其方法。