1.說明
使用java容器類的性質選擇容器
2.實現
package com.wish.datastrustudy; import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.Set; public class StringArray { public static void main(String[] args) { //測試union String[] arr1 = {"abc", "df", "abc","dd","bdfe"}; String[] arr2 = {"abc", "cc", "df", "d", "abc"}; String[] result_union = union(arr1, arr2); System.out.println("求並集的結果如下:"); for (String str : result_union) { System.out.println(str); } //測試insect String[] result_insect = intersect(arr1, arr2); System.out.println("求交集的結果如下:"); for (String str : result_insect) { System.out.println(str); } //測試 substract String[] result_minus = substract(arr1, arr2); System.out.println("求差集的結果如下:"); for (String str : result_minus) { System.out.println(str); } } //並集(set唯一性) public static String[] union (String[] arr1, String[] arr2){ Set<String> hs = new HashSet<String>(); for(String str:arr1){ hs.add(str); } for(String str:arr2){ hs.add(str); } String[] result={}; return hs.toArray(result); } //交集(注意結果集中若使用LinkedList添加,則需要判斷是否包含該元素,否則其中會包含重復的元素) public static String[] intersect(String[] arr1, String[] arr2){ List<String> l = new LinkedList<String>(); Set<String> common = new HashSet<String>(); for(String str:arr1){ if(!l.contains(str)){ l.add(str); } } for(String str:arr2){ if(l.contains(str)){ common.add(str); } } String[] result={}; return common.toArray(result); } //求兩個數組的差集 public static String[] substract(String[] arr1, String[] arr2) { LinkedList<String> list = new LinkedList<String>(); for (String str : arr1) { if(!list.contains(str)) { list.add(str); } } for (String str : arr2) { if (list.contains(str)) { list.remove(str); } } String[] result = {}; return list.toArray(result); } }
輸出結果:
求並集的結果如下: bdfe dd d abc df cc 求交集的結果如下: abc df 求差集的結果如下: dd bdfe