当前位置: 首页 > 知识库问答 >
问题:

对象列表的组合

芮承运
2023-03-14

我有个无法解决的问题。我希望我能让你明白。

给定以下航路点对象列表

列表

例子:

列表

Waypoint a = new Waypoint();
Waypoint b = new Waypoint();
Waypoint c = new Waypoint();
Waypoint d = new Waypoint();



myWaypoint.add(a);
myWaypoint.add(b);
myWaypoint.add(c);
myWaypoint.add(d);

>

k=3 n=4-

新的航路点对象数组

矩阵的预期结果

目标是生成包含这些对象的数组


共有1个答案

卜鹏
2023-03-14

如果实现算法不是任务的一部分,我会重新推荐一个库,比如组合库,它会为你生成组合。

使用组合lib3一个使用字符串的简单示例:

Generator.combination("A", "B", "C", "D")
        .simple(3)
        .stream()
        .forEach(System.out::println);

会给你一个输出

[A, B, C]
[A, B, D]
[A, C, D]
[B, C, D]

您可以使用lib生成自定义对象的组合,只需传递您的列表,例如将它们收集到列表列表中。下面的示例作为起点:

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

import org.paukov.combinatorics3.Generator;

public class Example {

    public static void main(String[] args) {
        List<Waypoint> myWaypoint = new ArrayList<>();
        Waypoint a = new Waypoint("a");
        Waypoint b = new Waypoint("b");
        Waypoint c = new Waypoint("c");
        Waypoint d = new Waypoint("d");
        myWaypoint.add(a);
        myWaypoint.add(b);
        myWaypoint.add(c);
        myWaypoint.add(d);

        List<List<Waypoint>> combinations = Generator.combination(myWaypoint)
                .simple(3)
                .stream()
                .collect(Collectors.toList());

        combinations.forEach(System.out::println);
    }

    static class Waypoint {
        String name;
        public Waypoint(String name) {
            this.name = name;
        }
        @Override
        public String toString() {
            return name;
        }
    }
}

您可能想阅读这篇关于java组合算法的文章,以找到类似于ApacheCommonsGoogle Guava

 类似资料:
  • 问题内容: 我有一个对象列表,我想对其进行洗牌。我以为可以使用该random.shuffle方法,但是当列表中包含对象时,这似乎失败了。是否有一种用于改组对象的方法或解决此问题的另一种方法? 这将失败。 问题答案: 应该管用。这是一个示例,其中对象是列表: 请注意,随机播放可在原位运行,并返回None。

  • 我有 和Xlink类,该类在内联变量中工作良好。 对于的XML输入 并且子课程拒绝被取消注册(没有任何异常被抛出)。 注:不幸的是,MOXy不是一个选项。 编辑:新编组对象 Edit2:在对测试对象进行了一些解组和编组的实验之后,我发现我需要在内容的标题中定义xmlns名称空间,以便与类似问题在于,我从一个包装类中获取Course元素,该包装类由resteasy解析出来。因此,生成的类不会携带名称

  • 我是Java和Stack Overflow的新手,我有一个关于排列的问题。 方法:我使用中的对象生成。每个的大小从(可能最小为1)到,并包含具有唯一名称属性的自定义生成对象。 问题:现在我的问题是如何在我的外部(y轴)中获得从第一个到最后一个的所有可能对象组合的排列(我想我们可以说这是x轴)? 我试着举一个简单的例子: : 1.1|1.2|1.3 : 2.1 : 3.1|3.2 这里,这些位于外部

  • 问题内容: 我如何用对象填充ArrayList,而内部的每个对象都不相同? 问题答案:

  • 我有以下列表,里面是另一个列表,然后是字符串列表 <代码>列表 示例 除了执行嵌套循环并最终替换列表之外,还有更好的方法吗?也许有溪流?

  • 我有一个类来代表一个玩家的手牌。但是,我(在另一个类中)有一个数组列表,我想在其中表示一堆玩家手。问题是我不知道如何在多手牌的数组列表中将一张牌添加到手牌中。我有一个代表卡牌和一副牌的类,效果很好。我只是试图了解如何将对象添加到数组列表中的对象。谢谢!