java对两个字符串数组取交集、并集和差集
标签:set lis 字符 add als cti collect util 技能
直接上代码。
import java.util.*;
public class StringArrayUtil {
// 求两个字符串数组的并集,利用set的元素唯一性
public static String[] union(String[] arr1, String[] arr2) {
Set set = new HashSet();
Collections.addAll(set, arr1);
Collections.addAll(set, arr2);
String[] result = {};
return set.toArray(result);
}
// 求两个数组的交集
public static String[] intersect(String[] arr1, String[] arr2) {
Map map = new HashMap();
LinkedList list = new LinkedList();
for (String str : arr1) {
if (!map.containsKey(str)) {
map.put(str, Boolean.FALSE);
}
}
for (String str : arr2) {
if (map.containsKey(str)) {
map.put(str, Boolean.TRUE);
}
}
for (Map.Entry e : map.entrySet()) {
if (e.getValue().equals(Boolean.TRUE)) {
list.add(e.getKey());
}
}
String[] result = {};
return list.toArray(result);
}
// 求两个数组的差集
public static String[] minus(String[] arr1, String[] arr2) {
LinkedList list = new LinkedList();
LinkedList history = new LinkedList();
String[] longerArr = arr1;
String[] shorterArr = arr2;
// 找出较长的数组来减较短的数组
if (arr1.length > arr2.length) {
longerArr = arr2;
shorterArr = arr1;
}
for (String str : longerArr) {
if (!list.contains(str)) {
list.add(str);
}
}
for (String str : shorterArr) {
if (list.contains(str)) {
history.add(str);
list.remove(str);
} else {
if (!history.contains(str)) {
list.add(str);
}
}
}
String[] result = {};
return list.toArray(result);
}
}
字符串数组的操作在平常的业务开发中用得比较多,是每个Java开发者都应当掌握的技能。
"大人的每一次流泪,都是一场无声的孤独。"
java对两个字符串数组取交集、并集和差集
标签:set lis 字符 add als cti collect util 技能
原文地址:https://www.cnblogs.com/yanggb/p/12798160.html
评论