求助 两个 数组 差集 ,或交集

wtydoone 2008-03-20 04:49:41
求助 两个 数组 差集 ,或交集
arrayA={01,02,03,04,05,06}
arrayB={02,03,09,10,11,12,14,15}
通过比较要得到他们差集.
...全文
576 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yes152 2008-03-20
  • 打赏
  • 举报
回复
import java.util.*;
public class Sets {
/**交集*/
public static Set<String> intersection(Set<String> setA, Set<String> setB) {
Set<String> setIntersection = new HashSet<String>();
String s = "";
Iterator<String> iterA = setA.iterator();
while (iterA.hasNext()) {
s = iterA.next();
if(setB.contains(s)) {
setIntersection.add(s);
}
}
return setIntersection;
}
/**差集*/
public static Set<String> difference(Set<String> setA, Set<String> setB) {
Set<String> setDifference = new HashSet<String>();
String s = "";
Iterator<String> iterA = setA.iterator();
while (iterA.hasNext()) {
s = iterA.next();
if(!setB.contains(s)) {
setDifference.add(s);
}
}
return setDifference;
}

public static void main(String[] args) {
String[] strA = {"green", "blue", "red", "pink", "yellow"},
strB = {"red", "green"};
Set<String> setA = new HashSet<String>(),
setB = new HashSet<String>(),
setC = null;

/**将数组元素加到集合*/
for (int i = 0; i < strA.length; i++) {
setA.add(strA[i]);
}
for (int i = 0; i < strB.length; i++) {
setB.add(strB[i]);
}

/**求交集结果*/
setC = intersection(setA, setB);
System.out.println("交集: " + setC);
/**求差集结果*/
setC = difference(setA, setB);
System.out.println("差集: " + setC);

}
}
toshiba_java 2008-03-20
  • 打赏
  • 举报
回复
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
public class TestArrUnite
{
private Integer[] arr1 ={1,2,3};
private Integer[] arr2 ={2,3,4};
public static void main(String[] args)
{
TestArrUnite test = new TestArrUnite();
Integer UniteArr [] = test.uniteArr();
Arrays.sort(UniteArr);
for(int i:UniteArr){
System.out.print(i+ " ");

}
System.out.println();
Integer ChaArr [] = test.chaArr();
Arrays.sort(ChaArr);
for(int i:ChaArr){
System.out.print(i+ " ");
}
}
public Integer[] uniteArr(){
List arrL1= Arrays.asList(arr1);
List arrL2= Arrays.asList(arr2);

Set hst = new HashSet(arrL1);
hst.addAll(arrL2);

return (Integer [])hst.toArray(new Integer [0]);
}
public Integer[] chaArr(){
List arrL1= Arrays.asList(arr1);
Set hst = new HashSet(arrL1);
for(Integer i:arr2){
if(!hst.add(i)){
hst.remove(i);
}
}
return (Integer []) hst.toArray(new Integer[0]);
}
}
zapdos 2008-03-20
  • 打赏
  • 举报
回复
转为Set
遍历a,看b里面是否包含,包含就删,不包含就添到b里面
  • 打赏
  • 举报
回复
用equals遍历比较两个数组
双重循环把相同的找出来就是交集
删除本数组中任何存在于另一数组中元素剩下的就是差集

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧