2016-10-28 7 views
3

Это мой первый пост здесь. Сегодня я начал использовать комбинаторную библиотеку для Java.Комбинатория Java. Создание объекта с сгенерированными данными

Это один: https://github.com/dpaukov/combinatoricslib3

Я получил больше, чем 10k длины сторон треугольника в Excel. Затем я вытащил их в массив 2d Integer.

Чем я создал класс Triangle:

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); 



} 

Заранее спасибо. Ура!

EDIT:

Это пример сторон:

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}, 
    }; 

Я хочу, чтобы генерировать все возможные Треугольники с этими данными.

+0

Одна вещь, чтобы иметь в виду: вы используете ** ** ИНТ повсюду, и некоторые потоковые вызовы могут на Autoboxing. Поэтому имейте в виду потенциальные скрытые эксплуатационные затраты для переключения между int и Integer. – GhostCat

ответ

1

должен выглядеть примерно так:

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()) 

Вы можете перебрать двумерная ИНТ [] [] массив и найти все комбинации для каждой линии, как что:

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

Посмотрите на мое редактирование, пожалуйста. – whiskermrr

+0

Не могли бы вы предоставить образец исходного кода (например, _forEach (System.out :: println) _), всего несколько строк. – zeppelin

+0

Я только заметил, что он не печатает мои цифры. – whiskermrr