2017-11-20 5 views
-1

저는 JAVA에 익숙하지 않습니다. 직장 동료는 숙제 (학교)를 도와 주었고 람다 표현을 사용했습니다. 나는 이것이 바로 가기라는 것을 이해하지만, 원래 표현이 무엇인지 이해하고 싶습니다.JAVA -이 람다 표현을 단순화하십시오.

Collections.sort(salespeopleList, (obj1, obj2) -> obj1.getUserID().compareTo(obj2.getUserID())); 
+0

http://idownvotedbecau.se/noresearch/ 빠른 구글 검색하고 [람다 표현식 자바 튜토리얼] 같은 것들을 (찾을 수 https://docs.oracle.com/javase/tutorial/java/ javaOO/lambdaexpressions.html) –

+0

좋은 동영상입니다 https://www.youtube.com/watch?v=1OpAgZvYXLQ –

답변

0

람다 식은 기능 프로그래밍의 일부입니다. C#의 lambda 식과 비슷합니다. (OBJ1, obj2보다) -> obj1.getUserID()은 compareTo (obj2.getUserID())

여기 OBJ1

및 obj2보다 입력은 화살표의 우측에있는 부분 (익명 함수 경우 실제 함수이다. 당신이 원한다) 그리고 그것은 방법이 의미하는 바를 정확하게 수행한다.

+0

Collections.reverseOrder를 시도하면 많은 오류가 발생합니다. – Andrew

0

비교할 개체 클래스의 정확한 이름을 모르지만 클래스가 "SalesPerson"이라고 가정하면 다음과 같이 보입니다.

당신이 만약 내가이

를 작성하는 동안 당신은 단지 왼쪽 주석을 참조에

Collections.sort(salespeopleList, new Comparator<SalesPerson>() { 
    @Override 
    public int compare(SalesPerson obj1, SalesPerson obj2) { 
     return obj1.getUserID().compareTo(obj2.getUserID()); 
    } 
}); 

"나는 부는, Collections.reverseOrder을하려고 할 때 많은 오류가 발생할 수 있기 때문에 나는 질문하고있다" equals, hash 및 개체 클래스에 compare set이 없으면 비교가 작동하지 않습니다. 객체 클래스에서 이와 같은 것이 필요할 것입니다.

0

원래 구현에서는 실제로 람다 함수를 구현하는 메서드로 비교기를 사용해야합니다. 기존의 비교기 인터페이스의 사용 (더 교훈이 될)에 의해 더 명시 적으로 만드는 예를 들어

:

public interface Comparator { 
    int compare(T o1, T o2); 
} 

public class ObjsComparator implements Comparator { 
    public int compare(SomeClass obj1, SomeClass obj2) { 
     // This is your lambda implementation 
     return obj1.getUserID().compareTo(obj2.getUserID()); 
    } 
} 

ObjsComparator mycomparator = new ObjsComparator(); 
Collections.sort(salespeopleList, mycomparator); 

덜 자세한 방법은 다음과 같습니다

Collections.sort(salespeopleList, new Comparator<SomeClass>() { 
    @Override 
    public int compare(SomeClass obj1, SomeClass obj2) { 
     // This is your lambda implementation 
     return obj1.getUserID().compareTo(obj2.getUserID()); 
    } 
}); 
0
package testproject; 
public class TestProject { 
    public static void main(String[] args) { 
     Compare compares = (a,b)->a.equals(b); 
     Object test = new Object(); 
     System.out.println(new TestProject().compareTo(test, test, compares)); 
     System.out.println(new TestProject().compareTo(test, new Object(), compares)); 
    } 

    interface Compare{ 
     boolean operation(Object a, Object b); 
    } 

    boolean compareTo(Object a, Object b, Compare localoperation) 
    { 
     return localoperation.operation(a, b); 
    } 
} 

이 질문에 대한 답이되기를 바랍니다. 그러나 람다 식에 대한 더 나은 이해가 필요하고 어떻게 작동하는지 알고 싶다면이 기사가 더 도움이 될 것입니다.

https://www.tutorialspoint.com/java8/java8_lambda_expressions.htm