Java:填充两个向量并对它们进行排序

时间:2009-04-27 06:53:31

标签: java vector comparator

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

我们必须编写Java 1.4约定。

让您的想象力更轻松;它是一个网格,它有一个排序向量(行)和一个内容向量(包含所有列)。它们需要填充一个向量并进行排序。

上下文:我有一个包含所有组件的GridBagLayout。我需要遍历所有组件并按正确的网格顺序填充它们(gridx,gridy)。对于那个解决方案,我考虑了两个向量,一个定义行并指向包含它的cols的向量。填充向量时将解析排序,或者我必须在第二步中对其进行排序。我想对于java 4,没有其他方法比两个包含对象的向量,对吗?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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,但是你明白了。

//还要注意,我不确定你在问什么,可能完全错了。