람다

2017-09-16 6 views
1
HashSet<Integer> liczby = new HashSet<Integer>(); 
liczby.add(1); 
liczby.add(2); 
liczby.add(3); 
liczby.add(4); 
liczby.removeIf ((Integer any) -> { return liczby.contains(3); }); 

for(Iterator<Integer> it = liczby.iterator(); it.hasNext();){ 
    Integer l2 = it.next(); 
    System.out.println(l2); 
} 

removeIf뿐만 아니라 3뿐만 아니라 1, 2 조건은 3으로 만족해야한다 ... 그것의람다

+0

프로그램에서 하나의 언어 - 영어 만 사용하는 것이 좋습니다. 혼합 언어는 폴란드어를 모르는 경우 다른 동료가 코드를 읽기가 어렵게 만듭니다. – DevDio

답변

3

람다는 각 요소에 적용 및 확인 :

1 -> 3 is present -> delete 1 
2 -> 3 is present -> delete 2 
3 -> 3 is present -> delete 3 
4 -> 3 is not present -> don't delete 4 
을 당신이 3을 제거하려면

에만 다음이 작업을 수행


모든 3 요소를 제거하려면 해당 솔루션 중 하나를 사용하십시오.

,210
liczby.removeIf(any -> any.equals(3)); 
//------------------------------------------------- 
liczby.removeIf(new Integer(3)::equals); 
//------------------------------------------------- 
Integer toRemove = 3; 
liczby.removeIf(toRemove::equals); 


귀하의 람다는 다음과 같이 간단하게 할 수 있습니다

liczby.removeIf(any -> liczby.contains(3)); 

루프 단순 반복에 대해 쉽게 사용할 수 있습니다 각각의 경우-:

for(Integer i : liczby){ 
    System.out.println(i); 
} 
+2

* 기본이기 때문에 * 아니요. :) – nullpointer

+0

또는'liczby.remove (3);를 사용하십시오. – Holger

5

생각해 이런 식으로 ...만큼 삭제 이유를 이해할 수 없다 세트에는 3가 포함되어 있으므로 현재 결과가 계속 삭제됩니다. 3가있는 경우 예는 요소 삭제됩니다 경우,

liczby.removeIf(e -> e == 3); 
+3

또한 메소드 참조를 할 수 있습니다 :'Integer interested = 3; liczby.removeIf (interested :: equals); ' – Eugene