繁体   English   中英

Java组合学。 使用生成的数据创建对象

[英]Java combinatorics. Creating an object with generated data

这是我在这里的第一篇文章。 今天我开始使用Java组合库。

这一个: https//github.com/dpaukov/combinatoricslib3

我在Excel中有超过10k长的三角形边。 比我把它们拉成2d整数数组。

比我创建了三角类:

public class Triangle {

private int a;
private int b;
private int c;

public Triangle(int a, int b, int c)
{
    this.a = a;
    this.b = b;
    this.c = c;
}

public boolean isCorrect()
{
    if(this.a + this.b > this.c)
        return true;

    return false;
}

}

我的问题是,我可以生成三角形的所有可能组合,但不知道如何创建对象三角形。 只知道如何打印结果。

public static void main(String[] args) throws IOException {


    Generator.combination(sides).simple(3).stream().forEach(System.out::println);



}

先感谢您。 干杯!

编辑:

这是双方的例子:

static final int[][] sides = new int[][]{

        {71, 100, 1231, 832, 127},
        {336, 447, 815, 658, 373},
        {126, 444, 556, 221, 1322},
        {1226, 662, 985, 87, 991},
        {555, 512, 111, 339, 22},
    };

我想用这些数据生成所有可能的三角形。

看起来应该是这样的:

Generator
.combination(sides)
.simple(3)
.stream()
.forEach(
     sides -> new Triangle(sides[0],sides[1],sides[2])
);

请注意,这意味着边是整数 ,如果不是(例如字符串),您可能需要另外将它们转换(映射)到适当的类型。

现在,如果您想要将它们全部收集到列表中,您可以执行以下操作:

List<Triangle> triangles = Generator
    .combination(sides)
    .simple(3)
    .stream()
    .map(sides -> new Triangle(sides[0],sides[1],sides[2]))
    .collect(Collectors.toList())

您可以遍历二维int [] []数组,并找到每行的所有组合,如下所示:

Arrays.stream(sides)
    .forEach(
    line -> {
         Generator.combination(Arrays.stream(line).boxed().collect(Collectors.toList()))
        .simple(3)
        .stream()
        .forEach(System.out::println);
    }
);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM