java中求一个集合的子集,差集有什么简单的方法吗?如求集合{“1”,“2”,“5”}的非空子集,和{“1”}的差集{“2”,“5”}

解决方案 »

  1.   


     List<String> list1 = new ArrayList();
    list1.add("1");
    list1.add("2");
    list1.add("5");

    List<String> list2 = new ArrayList();
    list2.add("1");

    List resultList = new ArrayList();

    for(String s:list1){
    boolean isExists = list2.contains(s);
        if(!isExists){
         resultList.add(s);
        }
     }


    System.out.println(resultList);不知道这样是否能满足lz的要求?
      

  2.   

    public static void aaaa(){
    String[] b={"1","2","3","4"};
      String[] a={"1","3"};
      
      //将a,b转换成Set型
      LinkedHashSet aSet = new LinkedHashSet();
      LinkedHashSet bSet = new LinkedHashSet();
      for (int i = 0; i < a.length; i++)
      {
       aSet.add(a[i]);
      }
      for (int i = 0; i < b.length; i++)
      {
       bSet.add(b[i]);
      }   //求差集
      bSet.removeAll(aSet);
           Iterator iterator = bSet.iterator();
           while(iterator.hasNext())
           {
            System.out.println(iterator.next().toString());
           }
           //求子集
    bSet.removeAll(aSet); }
      

  3.   

    共同学习下这个是我写的,楼主可以参考下:
    public static void main(String[] args) {
    List<String> parant = new ArrayList<String>(Arrays.asList(new String[] {
    "1", "2", "5","10" }));
    List<String> remove = new ArrayList<String>(Arrays
    .asList(new String[] { "1","2" }));
    String temp = null;
    List<String> result = null;
    int length=1;
    for(String item:parant){
    length*=2;
    }
    System.out.println("处理非空子集>>>>>>>>>>>>");
    for (int i = 1; i < length; i++) {
    result=new ArrayList<String>();
    temp = formatString(Integer.toBinaryString(i),parant.size());
    for (int j = temp.length() - 1; j >= 0; j--) {
                    if('1'==temp.charAt(j)){
                     result.add(parant.get(j));
                    }
    }
    System.out.println(result);
    }
    System.out.println("处理交集>>>>>>>>>>>>");
    parant.removeAll(remove);
    System.out.println(parant);
    }

    public static String formatString(String content,int length){
    StringBuffer sbBuffer=new StringBuffer();
    for (int i=0; i < length-content.length(); i++) {
    sbBuffer.append(0);
    }
    sbBuffer.append(content);
    return sbBuffer.toString();
    }