저는 JAVA에 익숙하지 않습니다. 직장 동료는 숙제 (학교)를 도와 주었고 람다 표현을 사용했습니다. 나는 이것이 바로 가기라는 것을 이해하지만, 원래 표현이 무엇인지 이해하고 싶습니다.JAVA -이 람다 표현을 단순화하십시오.
Collections.sort(salespeopleList, (obj1, obj2) -> obj1.getUserID().compareTo(obj2.getUserID()));
저는 JAVA에 익숙하지 않습니다. 직장 동료는 숙제 (학교)를 도와 주었고 람다 표현을 사용했습니다. 나는 이것이 바로 가기라는 것을 이해하지만, 원래 표현이 무엇인지 이해하고 싶습니다.JAVA -이 람다 표현을 단순화하십시오.
Collections.sort(salespeopleList, (obj1, obj2) -> obj1.getUserID().compareTo(obj2.getUserID()));
람다 식은 기능 프로그래밍의 일부입니다. C#의 lambda 식과 비슷합니다. (OBJ1, obj2보다) -> obj1.getUserID()은 compareTo (obj2.getUserID())
여기 OBJ1및 obj2보다 입력은 화살표의 우측에있는 부분 (익명 함수 경우 실제 함수이다. 당신이 원한다) 그리고 그것은 방법이 의미하는 바를 정확하게 수행한다.
Collections.reverseOrder를 시도하면 많은 오류가 발생합니다. – Andrew
비교할 개체 클래스의 정확한 이름을 모르지만 클래스가 "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이 없으면 비교가 작동하지 않습니다. 객체 클래스에서 이와 같은 것이 필요할 것입니다.
원래 구현에서는 실제로 람다 함수를 구현하는 메서드로 비교기를 사용해야합니다. 기존의 비교기 인터페이스의 사용 (더 교훈이 될)에 의해 더 명시 적으로 만드는 예를 들어
:
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());
}
});
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
http://idownvotedbecau.se/noresearch/ 빠른 구글 검색하고 [람다 표현식 자바 튜토리얼] 같은 것들을 (찾을 수 https://docs.oracle.com/javase/tutorial/java/ javaOO/lambdaexpressions.html) –
좋은 동영상입니다 https://www.youtube.com/watch?v=1OpAgZvYXLQ –