本帖最后由 javasister 于 2013-05-26 17:04:56 编辑

解决方案 »

  1.   

    用set集合先将数组b中的元素存入在存入a的元素;或者用数组遍历也可以将a在b中的重复元素除去。
      

  2.   

    遍历数组a,添加到一个set集合中,然后遍历数组b,对set集合进行remove,最后set集合中剩下的就是需要的
      

  3.   


    不熟悉set啊,以下代码功能帮我看看什么意思吗?
      public static < T> Set< T> difference(Set< T> setA, Set< T> setB) {  
        Set< T> tmp = new TreeSet< T>(setA);  
        tmp.removeAll(setB);  
        return tmp;  
      } 这段代码是从http://www.java3z.com/cwbwebhome/article/article8/81417.html?id=4238 来的,这个是不是一个可以现成使用的代码啊?
      

  4.   

    恩,就是这个意思,给你个样例参考public static void main(String[] args) {
    String[] a = {"a", "b", "c"};
    String[] b = {"c", "d"};

    Set<String> sa = new HashSet<String>();
    for (int i = 0; i < a.length; i++) {
    sa.add(a[i]);
    }
    for (int j = 0; j < b.length; j++) {
    sa.remove(b[j]);
    }

    Iterator<String> ia = sa.iterator();
    while (ia.hasNext()) {
    System.out.println(ia.next());
    }
    }
      

  5.   

    如果数组a中的某个成员同时也是数组b中的成员,那么就吧这个成员从数组a中去掉,怎么实现啊? 
    如果单纯的循环的话效率很低,
    就是一个双层for循环而已。
    所以一般的做法还是引入set来存储数组b。
    这样的话是
    Set set=new HashSet();
    for(Object o:b){
    set.add(o);
    }
    for(Object o:a){
    if(set.contains(o)){
    o=null;
    }
    }
    }
      

  6.   

    改一下
    Set set=new HashSet();
    for(Object o:b){
    set.add(o);
    }
    for(int i=0;i<a,length;i++){
    if(set.contains(o)){
    a[i]=null;
    }
    }
      

  7.   

    改一下
    Set set=new HashSet();
    for(Object o:b){
    set.add(o);
    }
    for(int i=0;i<a,length;i++){
    if(set.contains(o)){
    a[i]=null;
    }
    }
    } 比较初级,没看懂啊,代码这样写对吗? 但如下的代码出错
    public static String removeData(String[] a,String[] b) {
    Set set=new HashSet();
    for(Object o:b){
    set.add(o);
    }
    for(int i=0;i<a,length;i++){
    if(set.contains(o)){
    a[i]=null;
    }
    }

    }
      

  8.   

    也许说这话比较伤人心,但是你java基础真的学的不怎么好。
    java基础还得多练啊。public static void removeData(String[] a, String[] b) {
    Set set = new HashSet();
    for (Object o : b) {
    set.add(o);
    }
    for (int i = 0; i < a.length; i++) {
    if (set.contains(a[i])) {
    a[i] = null;
    }
    }
    }
      

  9.   

    用set和直接用双层迭代在算法复杂度上是一样的。算开销的话,set或者其他Collection会因为要自动扩容产生开销。直接两个for循环能完成这个功能 。算法思路是a中找到一个b中存在的元素,将它交换到末尾。算法结束的时候,只读取前一部分的元素即可,也可以使用System arraycopy复制出这些元素到新数组程序伪代码
    int index= a.length-1;//要交换的位置
    int samecount = 0;//有多少相同的。
     loop b[]//循环B数组
        loop a[]//循环A数组
         if(b[i] = a[j]){
          swap(a[j],a[index]);
          samecount++;
          index --;
    }
    loop a[]//从0~(a.length-samecount)