Collection A =new ArrayList(); 
        A.add("a"); 
        A.add("b"); 
        A.add("a"); 
        A.add("b"); 
        A.add("c"); 
A中或是其他的内容。 
定义一条规则:若c在a后面,则把c删掉;若b在a后面则把b删掉。我想问的是这条规则该如何用java语句实现?

解决方案 »

  1.   

        public static void main(String[] args) {
         Collection A =new ArrayList(); 
            A.add("a"); 
            A.add("b"); 
            A.add("a"); 
            A.add("b"); 
            A.add("c");
            
            Iterator iter=A.iterator();
            int i=0;
            int a=A.size();
            String str;
            while(iter.hasNext()){
             i++;
             str=iter.next().toString();
                if(str=="a"){
             a=i;
             }
             if(str=="b" && i>a){
             iter.remove();
             }
             if(str=="c" && i>a){
             iter.remove();
             }
            }
            Iterator itera=A.iterator();        while(itera.hasNext()){
             System.out.println(itera.next());        
             }
            }
      

  2.   

    思路就是 先找A,如果找到A,则之后找到C就remove(),找不到就什么也不做
             如果找不到A,什么也不做
      

  3.   

    Find the index of a, b, c, and then compare index.
    Do remove according to index position
      

  4.   

    如果规则改为:若c在a后面,则把c删掉;若b在a后面则把b删掉;若a在c后面,则把a删掉。该如何写?
      

  5.   

    个人是这样考虑:import java.util.*;
    public class MyTest {
      public static void main(String args[]){
      List<String> l=new ArrayList<String>();
      l.add("a");
      l.add("b");
      l.add("a");
      l.add("b");
      l.add("c");
          new MyTest().play(l);
      Iterator i=l.iterator();
      while(i.hasNext()){
      System.out.print(i.next()+"   ");
      }
      }
      public void play(List <String>l ){
      int size=l.size();
      for(int i=0;i<l.size()-1;i++){
      if("ac".equals(l.get(i)+l.get(i+1))||"ab".equals(l.get(i)+l.get(i+1))){
      l.remove(i+1);
      }
      }
      if(size!=l.size()){
      play(l);
      }
      }
    }最后结果是:aa
      

  6.   

    这样不对!按你的程序只能把相邻的元素中的后一个去掉。比如:ac能把c删掉,而axc则不能把c删掉。还是谢谢你的程序!
      

  7.   

    哦..我以为是相近才删..改了一下:
    import java.util.*;
    public class MyTest {
      public static void main(String args[]){
      List<String> l=new ArrayList<String>();
      l.add("a");
      l.add("x");
      l.add("c");
      l.add("b");
      l.add("c");

          new MyTest().play(l);
      Iterator i=l.iterator();
      while(i.hasNext()){
      System.out.print(i.next()+"   ");
      }
      }
      public void play(List <String>l ){
      int size=l.size();
      for(int i=0;i<l.size();i++){
      for(int j=i;j<l.size();j++)
      if("ac".equals(l.get(i)+l.get(j))||"ab".equals(l.get(i)+l.get(j))){
      l.remove(j);
      }
      }
      if(size!=l.size()){
      play(l);
      }
      }
    }
    结果:a x
      

  8.   

      l.add("a");
      l.add("x");
      l.add("c");
      l.add("a");
      l.add("b");
      l.add("x");
      l.add("c");
              l.add("f");
      l.add("c");是a x a x f:
    希望不会再错呵呵..
      

  9.   

    如果规则改为:若c在a后面,则把c删掉;若b在a后面则把b删掉;若a在c后面,则把a删掉。该如何写?
      

  10.   

    new MyTest().play(l);这句怎么解释啊?另外new MyTest().play(l);这一句怎么解释啊?
    谢谢!
      

  11.   

    遍历---判断---remove();
    这个不是很难把