JAVA求字符串数组交集、并集和差集
2017-02-27 14:31
465 查看
原博地址:http://www.cnblogs.com/wanying521/p/5179151.html
1 package string; 2 3 import java.util.HashMap; 4 import java.util.HashSet; 5 import java.util.LinkedList; 6 import java.util.Map; 7 import java.util.Map.Entry; 8 import java.util.Set; 9 10 public class StringArray { 11 public 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("求并集的结果如下:"); 17 for (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("求交集的结果如下:"); 25 for (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("求差集的结果如下:"); 33 for (String str : result_minus) { 34 System.out.println(str); 35 } 36 } 37 38 //求两个字符串数组的并集,利用set的元素唯一性 39 public static String[] union(String[] arr1, String[] arr2) { 40 Set<String> set = new HashSet<String>(); 41 for (String str : arr1) { 42 set.add(str); 43 } 44 for (String str : arr2) { 45 set.add(str); 46 } 47 String[] result = {}; 48 return set.toArray(result); 49 } 50 51 //求两个数组的交集 52 public static String[] intersect(String[] arr1, String[] arr2) { 53 Map<String, Boolean> map = new HashMap<String, Boolean>(); 54 LinkedList<String> list = new LinkedList<String>(); 55 for (String str : arr1) { 56 if (!map.containsKey(str)) { 57 map.put(str, Boolean.FALSE); 58 } 59 } 60 for (String str : arr2) { 61 if (map.containsKey(str)) { 62 map.put(str, Boolean.TRUE); 63 } 64 } 65 66 for (Entry<String, Boolean> e : map.entrySet()) { 67 if (e.getValue().equals(Boolean.TRUE)) { 68 list.add(e.getKey()); 69 } 70 } 71 72 String[] result = {}; 73 return list.toArray(result); 74 } 75 76 //求两个数组的差集 77 public 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 //找出较长的数组来减较短的数组 83 if (arr1.length > arr2.length) { 84 longerArr = arr2; 85 shorterArr = arr1; 86 } 87 for (String str : longerArr) { 88 if (!list.contains(str)) { 89 list.add(str); 90 } 91 } 92 for (String str : shorterArr) { 93 if (list.contains(str)) { 94 history.add(str); 95 list.remove(str); 96 } else { 97 if (!history.contains(str)) { 98 list.add(str); 99 } 100 } 101 } 102 103 String[] result = {}; 104 return list.toArray(result); 105 } 106 }
相关文章推荐
- JAVA程序:字符串数组交集、并集和差集
- JAVA求字符串数组交集、并集和差集
- Java求字符串数组交集 并集 差集 去重复并集
- JAVA求字符串数组交集、并集和差集
- JAVA求字符串数组交集、并集和差集
- Java求字符串数组交集、并集和差集
- JAVA程序:字符串数组交集、并集和差集
- java求两个数组的并集、交集、差集
- PHP数组的几个操作,求并集,交集,差集,数组与字符串的相互转换及数组去重
- java数组的交集、并集、差集
- String[] 字符串数组交集、并集、差集
- 【Java】实现浮点数组的并集以及整型数组的交集和两个字符串数组的逆序排序
- PHP数组的几个操作,求并集,交集,差集,数组与字符串的相互转换及数组去重
- Java实现数组的交集、并集、差集
- java list 交集 并集 差集 去重复并集
- JAVA 交集,差集,并集
- java list 交集 并集 差集 去重复并集
- java Set 求交集 并集差集
- java集合(交集,并集,差集)
- 【java系列】交集、并集、差集