一个基本的问题?
有两个arraylist(a,b).
如a(5,6,2,3,9):
b(3,2,6);
a的数据是b其中的一部分.
怎么让b的数据按照a的顺序排序?
问题点数:20、回复次数:3Top
1 楼javabandit(bandit)回复于 2003-07-02 14:01:43 得分 0
1)先找出b中元素在a中的顺序,放入一个堆栈中。
2)然后可以清空b,将堆中的元素取出重新放入b中!Top
2 楼xiaohaiz(城里的老土,两眼依然通红!)回复于 2003-07-02 14:09:37 得分 10
简单帮你实现了一下,不过也有缺陷:
(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;
}
}Top
3 楼cno(一一)回复于 2003-07-02 14:12:22 得分 10
简单写了一个,不过数组中不能有重复的元素
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++;
}
}
}Top




