JAVA求字符串数组交集、并集和差集  1package string;
2
3import java.util.HashMap;
4import java.util.HashSet;
5import java.util.LinkedList;
6import java.util.Map;
7import java.util.Map.Entry;
8import java.util.Set;
9
10public class StringArray {
11public static void main(String[] args) {
12//测试union
13        String[] arr1 = {"abc", "df", "abc"};
14        String[] arr2 = {"abc", "cc", "df", "d", "abc"};
15        String[] result_union = union(arr1, arr2);
16        System.out.println("求并集的结果如下:");
17for (String str : result_union) {
18            System.out.println(str);
19        }
20        System.out.println("---------------------可爱的分割线------------------------");
21
22//测试insect
23        String[] result_insect = intersect(arr1, arr2);
24        System.out.println("求交集的结果如下:");
25for (String str : result_insect) {
26            System.out.println(str);
27        }
28
29          System.out.println("---------------------疯狂的分割线------------------------");
30//测试minus
31        String[] result_minus = minus(arr1, arr2);
32        System.out.println("求差集的结果如下:");
33for (String str : result_minus) {
34            System.out.println(str);
35        }
36    }
37
38//求两个字符串数组的并集,利⽤set的元素唯⼀性
39public static String[] union(String[] arr1, String[] arr2) {
40        Set<String> set = new HashSet<String>();
41for (String str : arr1) {
42            set.add(str);
43        }
44for (String str : arr2) {
45            set.add(str);
46        }
47        String[] result = {};
Array(result);
49    }
50
51//求两个数组的交集
52public static String[] intersect(String[] arr1, String[] arr2) {
53        Map<String, Boolean> map = new HashMap<String, Boolean>();
54        LinkedList<String> list = new LinkedList<String>();
55for (String str : arr1) {
56if (!ainsKey(str)) {
57                map.put(str, Boolean.FALSE);
58            }
59        }
60for (String str : arr2) {
61if (ainsKey(str)) {
62                map.put(str, Boolean.TRUE);
63            }
64        }
65
66for (Entry<String, Boolean> e : Set()) {
67if (e.getValue().equals(Boolean.TRUE)) {
68                list.Key());
69            }
70        }
71
72        String[] result = {};
Array(result);
java数组字符串转数组74    }
75
76//求两个数组的差集
77public static String[] minus(String[] arr1, String[] arr2) {
78        LinkedList<String> list = new LinkedList<String>();
79        LinkedList<String> history = new LinkedList<String>();
80        String[] longerArr = arr1;
81        String[] shorterArr = arr2;
82//出较长的数组来减较短的数组
83if (arr1.length > arr2.length) {
84            longerArr = arr2;
85            shorterArr = arr1;
86        }
87for (String str : longerArr) {
88if (!ains(str)) {
89                list.add(str);
90            }
91        }
92for (String str : shorterArr) {
93if (ains(str)) {
94                history.add(str);
95                ve(str);
96            } else {
97if (!ains(str)) {
98                    list.add(str);
99                }
100            }
101        }
102
103        String[] result = {};
Array(result);
105    }
106 }
程序运⾏,打印输出:
求并集的结果如下:
d
abc
df
cc
---------------------可爱的分割线------------------------求交集的结果如下:
abc
df
---------------------疯狂的分割线------------------------求差集的结果如下:
cc
d
原⽂引⽤:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。