清楚两个集合中所有重复的元素

代码
  1 /*
  2  * To change this template, choose Tools | Templates
  3  * and open the template in the editor.
  4  */
  5 
  6 package removesame;
  7 
  8 import java.util.ArrayList;
  9 import java.util.List;
 10 
 11 /**
 12  *
 13  * @author root
 14  */
 15 public class Main {
 16 
 17     /**
 18      * 此方法测试   同一集合中不能再存在重复的元素  否则无法刪除   可以先把每个集合中重复的元素先删除
 19      */
 20     public static void main(String[] args) {
 21         // TODO code application logic here
 22 
 23         //存放aStr和bStr集合重复元素的index
 24         List<Integer> aDelIndex=new ArrayList<Integer>();
 25         List<Integer> bDelIndex=new ArrayList<Integer>();
 26 
 27 
 28         List<String> aStr=new ArrayList<String>();
 29         List<String> bStr=new ArrayList<String>();
 30 
 31         aStr.add("d");aStr.add("a");aStr.add("c");//aStr.add("d");
 32 
 33         bStr.add("a");bStr.add("b");bStr.add("c");
 34 
 35         String a="";
 36         String b="";
 37 
 38 
 39         //循环遍历两个几何的所有元素
 40         for(int i=0;i<aStr.size();i++)
 41         {
 42             a=aStr.get(i);
 43 
 44             int j=0;
 45             for(;j<bStr.size();j++)
 46             {
 47                 b=bStr.get(j);
 48 
 49                 if(a.equals(b))
 50                 {
 51                     
 52                    System.out.println("刪除索引:i="+i+"\tj="+j);
 53                    //如果两个值相同,则把他们的index  放进记录重复下标的几何(aDelIndex,bDelIndex)
 54                     aDelIndex.add(i);
 55                     bDelIndex.add(j);
 56 
 57                     //不需要再比较了,退出本次比较
 58                     break;
 59                     
 60                 }
 61             }
 62              
 63         }
 64 
 65 
 66 
 67 
 68 
 69         /*
 70          *将记录删除索引的集合里面的值   进行冒泡排序,从小到达排列,否则刪出有可能出错
 71          */
 72         int temp;
 73         for(int i=0;i<aDelIndex.size();i++)
 74         {
 75             for(int j=0;j<aDelIndex.size()-i-1;j++)
 76             {
 77                 if(aDelIndex.get(j)>aDelIndex.get(j+1))
 78                 {
 79                     temp=aDelIndex.get(j);
 80                     aDelIndex.set(j, aDelIndex.get(j+1));
 81                     aDelIndex.set(j+1,temp);
 82                 }
 83             }
 84         }
 85 
 86 
 87         for(int num:aDelIndex)
 88         {
 89             System.out.print(num+"\t");
 90         }
 91 
 92         System.out.println();
 93         
 94         for(int i=0;i<bDelIndex.size();i++)
 95         {
 96             for(int j=0;j<bDelIndex.size()-i-1;j++)
 97             {
 98                 if(bDelIndex.get(j)>bDelIndex.get(j+1))
 99                 {
100                     temp=bDelIndex.get(j);
101                     bDelIndex.set(j, bDelIndex.get(j+1));
102                     bDelIndex.set(j+1,temp);
103                 }
104             }
105         }
106          for(int num:bDelIndex)
107         {
108             System.out.print(num+"\t");
109         }
110 
111 
112 
113 
114 
115          int k=1;
116         
117         boolean f=false;
118 
119         //删除aStr中重复的元素
120 
121         //第一次刪出后,因为几何的索引会全部提前一个,所以都要刪出aStr.remove(i-1)
122         for(int i:aDelIndex)
123         {
124             if(f)
125             {
126                 aStr.remove(i-k);
127                 k++;//第一次减一  第一次减二  ……
128             }
129             else
130             {
131                 aStr.remove(i);
132                 f=true;
133             }
134         }
135 
136 
137         
138         f=false;
139 
140         //重置 k
141         k=1;
142         //刪出bStr中重复的元素
143         for(int j:bDelIndex)
144         {
145             System.out.println("j:"+j);
146             if(f)
147             {
148                 bStr.remove(j-k);
149                 k++;
150             }
151             else
152             {
153                 bStr.remove(j);
154                 f=true;
155             }
156         }
157 
158 
159 
160 
161         //打印
162         System.out.println("----------------------------------------------");
163         System.out.print("aStr:");
164         for (String s:aStr) {
165             System.out.print(s+"\t");
166         }
167 
168         System.out.println();
169         System.out.println("----------------------------------------------");
170         System.out.print("bStr:");
171         for (String s:bStr) {
172             System.out.print(s+"\t");
173         }
174         System.out.println();
175 
176 
177     }
178 
179 }


感觉做的很烦,不知道有没有更好的解决办法
posted @ 2009-11-27 10:26  busing  阅读(894)  评论(0编辑  收藏  举报