java.util.Collection 
及其子类,
效率肯定比C的低,不过低多少没做过研究。

解决方案 »

  1.   

    不知道java.util.*中的Vector类和Enumeration类有没有用呢?
    我想应该有用吧
      

  2.   

    用Collection类的removeAll(Collection c)方法,例如:
    Collection a=....;
    Collection b=....;
    Collection c=new Collection();
    c.addAll(a);//先把a存到c
    a.removeAll(b);//去掉与b相同的元素则:
    1、c.removeAll(a);//得到的就是a与b的交。
    2、b.addAll(a);//得到的就是a与b的并。速度问题值得讨论
      

  3.   

    不对吧,
    c.addAll(a);
    a.removeAll(b);
    得到的结构c中没有b的元素啊。
    另外
    速度会差到几倍的级别吗?
      

  4.   

    可能是我没说清楚,看看下面这个例子吧:
    import java.util.ArrayList;
     
     public class TestCollection{
      public static void main(String[] args){
      ArrayList A=new ArrayList();
      System.out.print("Collection A is: ");
      for(int i=0;i<20;i++){
      A.add(new Integer(i));
      System.out.print(" "+i);
      }
      System.out.println();
     
      ArrayList B=new ArrayList();
      System.out.print("Collection B is: ");
      for(int i=10;i<30;i++){
      B.add(new Integer(i));
      System.out.print(" "+i);
      }
      System.out.println();
     
      ArrayList AsubB=new ArrayList();
      AsubB.addAll(A);
      AsubB.removeAll(B);//
      System.out.print("Collection A-B is: ");
      for(int i=0;i<AsubB.size();i++){
      System.out.print(" "+AsubB.get(i));
      }
      System.out.println();
     
      ArrayList AandB=new ArrayList();
      AandB.addAll(A);
      AandB.removeAll(AsubB);
      System.out.print("Collection A&B=A-(A-B) is: ");
      for(int i=0;i<AandB.size();i++){
      System.out.print(" "+AandB.get(i));
      }
      System.out.println();
     
          ArrayList AorB=new ArrayList();
          AorB.addAll(AsubB);
          AorB.addAll(B);
      System.out.print("Collection A|B=(A-B)+B is: ");
      for(int i=0;i<AorB.size();i++){
      System.out.print(" "+AorB.get(i));
      }
      System.out.println();
      }
     } 烦是烦了些,应该有更好的方法,到时候可以做一下比较。
      

  5.   

    汗……!麻烦倒是无作为,但是这么做的性能是在是………………因为可能会对两个100k条记录(每个记录32byte左右)的集合进行交集操作,这样做的话内存使用量……难道果然还是下到C层面的好?Java层就没有什么高效的方法吗?
      

  6.   

    测试了一下,大概因为Collection不能存储基本类型,因此做int(Ingeter)的集合的处理的时候效率很差!对此,各位有什么建议?