Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java组合数学。使用生成的数据创建对象_Java_Combinatorics - Fatal编程技术网

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

Java组合数学。使用生成的数据创建对象,java,combinatorics,Java,Combinatorics,这是我在这里的第一篇帖子。今天我开始使用面向Java的组合库 这个: 我在Excel中有超过10k长的三角形边。然后我把它们放到二维整数数组中 然后我创建了类三角形: 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; } publi

这是我在这里的第一篇帖子。今天我开始使用面向Java的组合库

这个:

我在Excel中有超过10k长的三角形边。然后我把它们放到二维整数数组中

然后我创建了类三角形:

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,一些流式调用可能会导致自动装箱。因此,请注意在int和integer之间切换可能隐藏的性能成本。如果您提供原始代码输出的示例(即forEach(System.out::println)),只需几行即可。我只是注意到它不会打印我的数字。顺便说一句,这是原始代码。使用sides数组作为临时帮助,而不是Excel.AFAIK Generator中的10k整数。combination(sides)需要一个简单的参数列表,而不是像您这样的二维数组(至少javadoc是这么说的)。像这样试试:Generator.composition(711001231832127)。。。。。看看它是否适合你我的老师展示了二维数组的例子。但他创造了四合院。这只是实现问题。
Arrays.stream(sides)
    .forEach(
    line -> {
         Generator.combination(Arrays.stream(line).boxed().collect(Collectors.toList()))
        .simple(3)
        .stream()
        .forEach(System.out::println);
    }
);