1)先找出b中元素在a中的顺序,放入一个堆栈中。
2)然后可以清空b,将堆中的元素取出重新放入b中!

解决方案 »

  1.   

    简单帮你实现了一下,不过也有缺陷:
    (1) 没有做数据有效性处理;
    (2) 集合中不能有重复的元素,否则如果a(5,6,6,2,3,9), b(2.3.6)排列出来是(6,6,2,3);
    (3) 等
    不过如果只是你问题中的简单需求现在还可以满足.public class TestSortArrayList extends TestCase {
        public TestSortArrayList(String name) {super(name);}    ArrayList a = new ArrayList();
        ArrayList b = new ArrayList();    protected void setUp() throws Exception {
            a.clear();
            b.clear();
            a.add(new Integer(5));
            a.add(new Integer(6));
            a.add(new Integer(2));
            a.add(new Integer(3));
            a.add(new Integer(9));        b.add(new Integer(3));
            b.add(new Integer(2));
            b.add(new Integer(6));
        }    public void testSort() {
            ArrayList newList = sort(a, b);
            assertNotNull(newList);
            assertEquals(3, newList.size());
            assertEquals(new Integer(6), newList.get(0));
            assertEquals(new Integer(2), newList.get(1));
            assertEquals(new Integer(3), newList.get(2));
        }    static ArrayList sort(ArrayList src, ArrayList sub) {
            ArrayList newList = new ArrayList();        for ( Iterator it = src.iterator(); it.hasNext(); ) {
                Object value = it.next();
                if ( sub.contains(value) ) {
                    newList.add(value);
                }
            }
            return newList;
        }
    }
      

  2.   

    简单写了一个,不过数组中不能有重复的元素       
    int [] a = {1,2,3,4};
            int [] b = {3,2,1};
            int [] c = new int[b.length];
            int n=0;
            for (int i=0;i<a.length;i++)
            {
                for (int j=0;j<b.length;j++)
                {
                    if (a[i]==b[j])
                    {
                        c[n]=a[i];
                        System.out.println(c[n]);
                        n++;
                        }
                }
            }