0

如何填充两个向量并将它们相互组合(索引或类中的对象类型)。我想如果我使用索引来组合它们,那么排序可以用 Collections.sort 处理,否则我必须创建一个比较器。

我们必须按照 Java 1.4 约定进行编码。

让你的想象更轻松;它是一个具有排序向量(行)和内容向量(所有列)的网格。它们需要填充到向量中并进行排序。

上下文:我有一个 GridBagLayout,其中包含以奇怪的顺序排列的所有组件。我需要循环浏览所有组件并以正确的网格顺序(gridx,gridy)填充它们。对于那个解决方案,我考虑了两个向量,一个定义行并指向包含它的 cols 的向量。要么在填充向量时解决排序问题,要么我必须在第二步对其进行排序。我猜对于 java 4,除了包含一个对象的两个向量之外没有其他方法,对吧?

4

2 回答 2

1

OO 解决方案是将两个向量中的对象包装在某种东西中,以实现比较并保留指向真实对象的指针。这样,您可以对彼此独立的两个向量进行排序,并使用包装器来获取真实对象。

这就是“装饰者”设计模式。

于 2009-04-27T08:30:19.157 回答
0

如果我理解,请告诉我。作为输入,您将获得两个向量。第一个是引用第二个向量中索引的行号的有序列表。第二个向量是一些东西的列表。您想要一个包含与第二个向量相同的对象的向量,但按第一个向量中描述的顺序排序。

假设这就是你想要做的,这就是我的做法:

public class ThisHadBetterNotBeAHomeworkAssignmentYoungMan {

    public Vector orderContent(Vector indices, Vector content) {
       Object[] orderedStuff = new Object[content.size()];
       for( int i=0; i < indices.size(); i++ ) {
          orderedStuff[i] = content.get(((Integer)indices[i]).intVal());
       }
       return new Vector(orderedStuff);
    }
}

//请注意,这是非常粗略的代码,我既没有执行它,也没有费心检查你是否可以将一组东西作为构造函数传递给 Vector,但你明白了。

//另请注意,我不确定您要问的确切内容,并且可能完全错误。

于 2009-04-27T07:03:12.610 回答