【问题标题】:Java: fillings two vectors and sorting themJava:填充两个向量并对它们进行排序
【发布时间】:2010-10-22 00:05:59
【问题描述】:

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

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

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

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

【问题讨论】:

  • 对不起,伙计,您的问题对我来说不是很清楚,可能您想改写一下。
  • 也许你是对的...... sigh 你有一个 GridBagLayout 包含所有组件的奇怪顺序。我需要循环浏览所有组件并以正确的网格顺序(gridx,gridy)填充它们。对于那个解决方案,我考虑了两个向量,一个定义行并指向包含它的 cols 的向量。要么在填充向量时解决排序问题,要么我必须在第二步对其进行排序。我猜对于 java 4,除了包含一个对象的两个向量之外没有其他方法,对吧?
  • 请编辑您的问题并澄清它;不是每个人都阅读 cmets。
  • 不相关说明:如果可以(即禁止在代码中的其他地方使用旧版),您应该放弃使用已弃用的 Vector 以支持更快的 ArrayList。

标签: java vector comparator


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    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,但你明白了。

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

    【讨论】:

    • 您在上面的描述几乎就是我所需要的。除了 orderVector 不需要与 contentVector 相同。在我看来,orderVector 应该只有两个索引。
    猜你喜欢
    • 2011-12-30
    • 1970-01-01
    • 2016-12-03
    • 2022-10-04
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 2016-09-23
    相关资源
    最近更新 更多