2016-10-28 2 views
3

이것은 여기에 내 첫 번째 게시물입니다. 오늘 저는 자바 용 조합 라이브러리 (combinatoric library)를 사용하기 시작했습니다. 이것은자바 조합. 생성 된 데이터로 객체 만들기

: https://github.com/dpaukov/combinatoricslib3

내가 Excel에서 삼각형의 측면 이상 10,000 길이를 가지고있다. 나는 그것들을 2 차원 Integer 배열로 끌어 들였다.

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

.

+0

한 가지 : 당신이 사용하는 ** INT ** 모든 장소, 일부 스트리밍 통화 오토 박싱에 수도를 통해. 따라서 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()) 

당신은 2 차원 INT [] [] 배열을 반복하고 찾을 수있는 모든 같은 각 라인에 대한 조합 : 명심해야 할

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