String A ={A,B,C,D,E}
String B ={C,D,F,G,I}
求结果1.{A,B,E} 2.{C,D} 3.{F,G,I}
String B ={C,D,F,G,I}
求结果1.{A,B,E} 2.{C,D} 3.{F,G,I}
解决方案 »
- 关于Lucene IndexWriter 的 setMergedSegmentWarmer 方法求助
- jsp表格问题
- 连载:STDR——基于Struts2的页面内容区域分割实现
- 关于jsp的url的get参数加密的问题
- 帮帮忙,郁闷了几天的问题hibernate 查询不了数据
- tomcat崩溃了?
- 大家帮我看看这个Struts构架出现的错误
- [求助]在Dreamweaver做jsp连access
- 一个关于在win2000下安装jsp的问题?求助各位兄台!!!!!!!!!!!
- 谁帮我调试下jsp源代码,源代码出错了,我私信给你发过去。驱动是否注册我不会调试。
- 大家帮忙看一下 ....
- 求助~~MyEclipse+tomcat 7.x +mysql
import java.util.ArrayList;
import java.util.List;
public class Jihe {
public static void main(String[] args) {
String A ="A,B,C,D,E";
String B ="C,D,F,G,I";
//得到两个集合对应的数组
String[] tempA = A.split(",");
String[] tempB = B.split(",");
List<String> list1 = new ArrayList<String>();//保存A与B差集
List<String> list2 = new ArrayList<String>();//保存交集
List<String> list3 = new ArrayList<String>();//保存B与A的差集
for(int i=0; i<tempA.length; i++) {
if(!find(tempB,tempA[i]))
list1.add(tempA[i]);
else
list2.add(tempA[i]);
}
for(int i=0; i<tempB.length; i++) {
if(!find(tempA,tempB[i]))
list3.add(tempB[i]);
}
System.out.println("A与B的差集:" + list1);
System.out.println("A与B的交集:" + list2);
System.out.println("B与A的差集:" + list3);
}
/**
* 判断数组arr中是否包含字符串str,包含则返回true,否则返回false
* @param arr
* @param str
* @return
*/
private static boolean find(String[] arr, String str) {
boolean flag = false;
for(int i=0; i<arr.length; i++) {
if(arr[i].equals(str)) {
flag = true;
break;
}
}
return flag;
}
}
String[] A = new String[]{"A","B","C","D","E"};
String[] B = new String[]{"C","D","F","G","I"};
List<String> aList = new ArrayList<String>(Arrays.asList(A));
List<String> bList = new ArrayList<String>(Arrays.asList(B));
List<String> cList = new ArrayList<String>(aList); cList.retainAll(bList);
aList.removeAll(cList);
bList.removeAll(cList);
System.out.println(aList);
System.out.println(bList);
System.out.println(cList);
提供一个短版的
Collection.addAll 并
Collection.removeAll 差
Collection.retainAll 交
Arrays.asList 得到一个集合import java.util.*;public class Jihe {
public static void main(String[] args) {
String A ="A,B,C,D,E";
String B ="C,D,F,G,I";
//得到两个集合对应的数组
String[] tempA = A.split(",");
String[] tempB = B.split(",");
List<String> list1 = Arrays.asList(tmpeA).removeAll(Arrays.asList(tmppB)); //差
List<String> list2 = Arrays.asList(tmpeA).retainAll(Arrays.asList(tmppB)); //交
List<String> list3 = Arrays.asList(tmppB).retainAll(list2); //差
System.out.println("A与B的差集:" + list1);
System.out.println("A与B的交集:" + list2);
System.out.println("B与A的差集:" + list3);
}
}
如果想要顺序可以用java的可排序集合 //测试用代码
public void testSetHandler() {
/*
String A ={A,B,C,D,E}
String B ={C,D,F,G,I}
求结果1.{A,B,E} 2.{C,D} 3.{F,G,I}
*/
String[] arrA = new String[]{"A","B","C","D","E"};
String[] arrB = new String[]{"C","D","F","G","I"}; Set<String> setA = new HashSet<String>();
Set<String> setB = new HashSet<String>();
setA.addAll(Arrays.asList(arrA));
setB.addAll(Arrays.asList(arrB));
//结果1 A-B
Set<String> setA_B = geDifferenceSet(setA,setB);
outPrintResult("结果1 A-B",setA_B);
//结果2 AnB
Set<String> setBnA = getSameSet(setA, setB);
outPrintResult("结果2 AnB",setBnA); //结果3 B-A
Set<String> setB_A = geDifferenceSet(setB,setA);
outPrintResult("结果3 B-A",setB_A);
} private void outPrintResult(String description, Set<String> set) {
System.out.println(description + ":");
Iterator<String> ite = set.iterator();
while (ite.hasNext()) {
String currentStr = ite.next();
System.out.println(" " + currentStr);
}
} //合集求出
public Set<String> getUnionSet(Set<String>... sets) {
Set<String> unionSet = new HashSet<String>();
for (Set<String> set:sets) {
unionSet.addAll(set);
} return unionSet;
} //交集求出 = 合集-差集
public Set<String> getSameSet(Set<String>... sets) {
Set<String> sameSet = new HashSet<String>();
Set<String> unionSet = getUnionSet(sets);
sameSet = unionSet;
for (Set<String> set:sets) {
sameSet = geDifferenceSet(sameSet, geDifferenceSet(unionSet, set));
} return sameSet;
} //差集求出
public Set<String> geDifferenceSet(Set<String> setSrc, Set<String>... sets) {
Set<String> unionSet = new HashSet<String>();
unionSet.addAll(setSrc);
for (Set<String> set:sets) {
unionSet.removeAll(set);
} return unionSet;
}