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}

解决方案 »

  1.   


    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;
    }
    }
      

  2.   


    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);
    提供一个短版的
      

  3.   

    借用一下你的代码,可以通过结合的交并差方法
    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);
        }
        
     }
      

  4.   

    既然是集合,当然用集合来解呀。集合是无序的,结果与楼主期待的相同,但是顺序不同。
    如果想要顺序可以用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;
      }