2017-11-23 7 views
0

유전자 알고리즘 속성 === 인 항목을 필터링하는 일반 맵 항목을 가져올 수있는 다음 방법을 고려해 봅시다 (내 코드가 아님).) :일반 HashMap을 필터링하는 방법을 사용하는 방법 - Java

문제 :이 방법을 호출하고 사용하는 방법은 무엇입니까?

클래스에 '자동차'라는 정적 메서드가 아닌 getColor()가 있다고 가정 해 보겠습니다. 내가 예를 들어 내 myHashMap 내부 빨간 자동차의 목록을 원하는

HashMap<Integer, Car> myHashMap ; 

으로 나는 'myHashMap'목적을 가지고, 즉 자동차의지도이며, 다음 선언했다.

+0

'car'는 이름의이 귀하의 람다 함수의 매개 변수. 자바에서 람다에 익숙하지 않다면, 오라클의 자바 튜토리얼을 참조하십시오. – dasblinkenlight

+0

getObjectWithAttributeEqualTo의 서명을 참조하십시오. 여기서이 메서드의 두 번째 매개 변수가 Function 형식이라는 것을 알 수 있습니다. 그런 다음 car -> car.getColor()는 Function의 인스턴스입니다. – P3trur0

+0

또한 문제를 재현 할 수 없습니다. – Henrik

답변

1

이 코드는 이클립스 산소에 잘 작동, 당신의 IDE가 당신에게 '정적이지'오류를주는 잘못된 생각 :

List<Car> redCars = getValuesWithAttributeEqualTo(myHashMap, Car::getColor, "red"); 
+0

Netbeans를 사용합니다. – Fausto70

+0

난 그냥 tryed 다시 오류가 발생합니다 : 비 정적 메서드 getColor() 정적 컨텍스트에서 참조 할 수 없습니다. – Fausto70

0

FOUND 해결책 :

List<Car> redCars = Utilities.getObjectWithAttributeEqualTo(myHashMap, object->object.getColor(), "red");