文章目录
- 题目一
- 题目二
- 题目三
- 题目四
题目一
(一)自定义泛型类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();
}
}
测试结果截图:
题目二
(二)有下面的ArrayList,并使用foreach和迭代器遍历此链表。
使用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 + " ");
}
}
}
运行结果截图:
使用迭代器遍历链表的源程序:
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()+" ");
}
}
}
运行结果截图:
题目三
(三)有下面的Map集合,使用两种方法遍历。
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");
//方法一 keySet()
Set<Integer> keys = map.keySet();
for (Integer key : keys
) {
System.out.println(key+":" +map.get(key));
}
}
}
运行结果截图:
方法二源程序:
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());
}
}
}
运行结果截图:
题目四
(四)双色球共有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));
}
}
运行结果截图:
收获:
1、 泛型、学会自定义泛型的定义以及应用。
2、通过arraylist模拟栈这种先进后出的数据结构,实现pop(),push(),peek(),getSize()等方法,并进行测试。
3、学会使用foreach和vector迭代器迭代输出数组中的元素。
4、泛型的好处1.类型安全2.能够避免在强转时出现问题
5、学会使用map里的keySet()和entrySet()方法。
6、了解掌握HashSet以及TreeSet的相关属性及其方法。