1、创建类文件
2、package Waaa;import java.util.HashMap;import java.util.HashSet;import java.util.Map;import java.util.Map.Entry;import java.util.Set;public class SeqList<T> extends Object { // 对象数组存储顺序表的数据元素,保护成员 protected Object[] element; // 顺序表元素个数(长度) protected int n; // 构造容量为length的空表 public SeqList(int length) { // 申请数组的存储空间,元素为null this.element = new Object[length]; // 若length<0,则抛出长度异常 this.n = 0; } // 创建迷人容量的空表。构造方法重载 public SeqList() { // 调用已经声明的指导参数列表的构造方法 this(64); } // 构造顺序表。由values数组提供元素 public SeqList(T[] values) { // 创建容量为values.lenght this(values.length); for (int i = 0; i < values.length; i++) { this.element[i] = values[i]; } this.n = element.length; } // 判断顺序表是否为空 public boolean isEmpyt() { return this.n == 0; } // 返回顺序表个数 public int size() { return this.n; } // 添加 public int add(int i, T x) { if (x == null) throw new NullPointerException("x==null"); if (i < 0) { i = 0; } if (i > this.n) { i = this.n; } Object[] source = this.element; if (this.n == element.length) { this.element = new Object[source.length * 2]; for (int j = 0; j < i; j++) this.element[j] = source[j]; } for (int j = this.n - 1; j >= i; j--) { this.element[j + 1] = source[j]; } int flag = 0; if (flag == 0) { this.element[i] = x; this.n++; } return i; } public int add(T x) { return this.add(this.n, x); } // 返回第I个元素, public T get(int i) { if (i >= 0 && i < this.n) { return (T) this.element[i]; } return null; } // 交集 public SeqList<T> intersect(T[] arr1, T[] arr2) { Map<T, Boolean> map = new HashMap<T, Boolean>(); SeqList<T> list = new SeqList<T>(); for (T str : arr1) { if (!map.containsKey(str)) { map.put(str, Boolean.FALSE); } } for (T str : arr2) { if (map.containsKey(str)) { map.put(str, Boolean.TRUE); } } for (Entry<T, Boolean> e : map.entrySet()) { if (e.getValue().equals(Boolean.TRUE)) { list.add(e.getKey()); // System.out.println(e.getKey()); } } return list; } // 并集 public SeqList<T> Union(T[] arr1, T[] arr2) { SeqList<T> sList = new SeqList<T>(); Set<T> set = new HashSet<T>(); for (int i = 0; i < arr1.length; i++) { set.add(arr1[i]); } for (int i = 0; i < arr2.length; i++) { set.add(arr2[i]); } for (T t : set) { sList.add(t); } return sList; }}
3、创建测试主文件
4、package Waaa;import java.util.Scanner;public class TestList { publi艘早祓胂c static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.print("请输入第一行个数:"); String len1 = scan.nextLine(); System.out.print("请输入第一行数据:"); String str1 = scan.nextLine(); String[] arr1 = str1.trim().split(" "); if (arr1.length != Integer.parseInt(len1.trim())) { System.out.println("输入数据不合法!"); return; } System.out.print("请输入第二行个数:"); String len2 = scan.nextLine(); System.out.print("请输入第二行数据:"); String str2 = scan.nextLine(); String[] arr2 = str2.trim().split(" "); if (arr2.length != Integer.parseInt(len2.trim())) { System.out.println("输入数据不合法!"); return; } System.out.print("请输入运算法则(Union 或 Intersection):"); String type = scan.nextLine();// String[] arr1 = {"4","3","2","1"};// String[] arr2 = {"5","2","6","4"}; SeqList<String> list = new SeqList<String>(); if (type.equals("Union")) { list = list.Union(arr1, arr2); } else if (type.equals("Intersection")) { list = list.intersect(arr1, arr2); } for (int i = 0; i < list.size(); i++) { System.out.print(list.get(i) + " "); } }}