2014-03-24 4 views
0

Ok 그래서 일부 개체 (내 경우 4)를 검색하고 가장 작은 멤버 변수를 가진 개체를 찾는 algorythm을 찾고 싶습니다. 당신이 그 값을 얻을 수 있다고하자. object.getIntegerValue()가장 작은 멤버 변수를 가진 개체 찾기

제 경우에는 4 가지 안드로이드 레이아웃이 있으며, 가장 작은 양의 차일드를 가진 레이아웃을 찾고 싶습니다.

많은 솔루션이있을 것이라고 생각하지만 빠른 정보를 찾고 싶습니다. 아무리 더러운 등등 ....

내 코드는 지금까지 짧은 지저분하고 나던 항상 가장 작은 멤버 변수와 객체를 반환,하지만 여기에 코드 예제 역할을한다 :

private LinearLayout layoutChanger(){ 
    int one, two, three; 
    one = layoutOne.getChildCount(); 
    if ((two = layoutTwo.getChildCount()) <= one) { 
     if ((three = layoutThree.getChildCount()) <= two) { 
      if ((layoutFour.getChildCount()) <= three) 
       return layoutFour; 
      return layoutThree; 
     } 
     return layoutTwo; 
    } 
    return layoutOne; 
} 

편집 :

정말 빠르게 하나의 필적 나는 오히려 일을 속도를하는 방법에 대한 제안을 얻고 싶었다이 작업을 수행하는 방법을 알고 ...? 아니면 성능 향상을 위해 OOP 솔루션을 차별화해야합니까?

+3

구현 [비교] (http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html)? – Mena

+0

코드에 몇 가지 문제가 있습니다. 'three'가 가장 작 으면, 당신의 방법은'two'>'one'만큼 그것을 결코 나타내지 않을 것입니다. 대신에'two'의 값을 반환 할 것이고'three'의 값을 테스트하지 않을 것입니다. – mttdbrd

답변

0
private LinearLayout layoutToggler(LinearLayout[] layoutArr){ 
     int currentChildCount; 
     int minChildCount = MAX_VAL; 
     LinearLayout retLayout = null; 
     for(LinearLayout layout:layoutArr){ 
      if((currentChildCount = layout.getChildCount()) == MIN_VAL){ 
       retLayout = layout; 
       break; 
      } 
      else if(currentChildCount < minChildCount) { 
       retLayout = layout; 
       minChildCount = currentChildCount; 
      } 
     } 
     return retLayout; 
    } 

감사합니다. Arlington s 그 아이디어는 작동하는 해결책으로 가져 왔습니다.

3

그냥 예 :

int childCount; 
    Layout[] myLayouts = {layoutOne,layoutTwo,layoutThree}; 
    Layout selected; 
    for(Layout layout:myLayouts){ 
     if(childCount=0 || childCound>layout.getChildCount()) { 
      selected = layout; 
      childCount = layout.getChildCount(); 
     } 
    } 
    return layout; 
+0

myLayouts 배열을 만드는 것이 좋지 않습니다. getChildCount()로 채워진 int 배열을 만들 수 있습니다. 배열을 반복하는 것만으로도 배열을 만드는 것보다 훨씬 효율적입니다. – mttdbrd

+0

가장 좋은 방법은 getMinLayout (Layout ... layouts)과 같은 객체의 불확정 배열을 가져 오는 메소드로 변환하는 것이라고 생각합니다. – GhostDerfel

1

하지 자바 코드 다음, 이것은 OP에게 아이디어를주고 단지 (같은 자바) 의사 코드입니다 ...

lowestPossibleValue = ?; 
currentLowestValue = MAX; 
foreach (object : collection) { 
    if (object.getValue == lowestPossibleValue) { 
     foundObject = object; 
     break; 
    } else { 
     if (object.getValue < currentLowestValue) { 
      foundObject = object; 
     } 
    } 
} 

// foundObject에는 결과가 포함됩니다.

+0

여기도 올바른 대답이지만 여기는 Java가 아닙니다. – GhostDerfel

+0

@GhostDerfel I 그게 자바라고 제안한 적은 해결책이 너무 명확하고 그런 경우에는 "codez"을 피하는 것을 선호하므로 질문자가 최소한 조금은 생각할 기회를 갖게 될 것입니다. –

+0

당신이 내 질문을 잘못 해석했다고 생각합니다. 분명한 해결책을 찾지 만 빠른 것이 있습니다. –

관련 문제