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小时内删除。
发表评论