2014-12-05 2 views
0

이 작업을 수행하는 좀 더 간결한 방법이 있습니까?이 작업을 수행하는 좀 더 간결한 방법이 있습니까?

private boolean fieldLockExists(String tableName, String fieldName, Integer id) 
{ 
    List<MpFieldLocks> fieldLocks = getFieldLocks(tableName, id); 
    boolean exists = false; 

    for (MpFieldLocks fieldLock: fieldLocks) 
    { 
    if (Objects.equals(fieldLock.getFieldName(), fieldName)) 
    { 
     exists = true; 
     break; 
    } 
    } 

    return exists; 
} 

for 루프에서 돌아와서 짧게 만들 수 있음을 알고 있습니다. 나는 가능한 한 근본적인 변화를 찾고있다.

C#에서는 LINQ를 사용할 수 있습니다. Java에서는 확실하지 않습니다.

+0

왜 그냥'if' 성명을 반환하지 않습니다? 그런 식으로 당신은 break 나'exists' 변수가 필요하지 않습니다. –

+1

'any' 함수가있는 라이브러리/API를 사용하십시오. –

+0

for 루프에서 더 짧게 되돌릴 수 있다는 것을 알고 있습니다. 나는 가능한 한 근본적인 변화를 찾고있다. – mattalxndr

답변

3

자바 (8)을 사용하는 경우, 당신은 스트림을 사용할 수 있습니다

private boolean fieldLockExists(String tableName, String fieldName, Integer id) 
{ 
    return getFieldLocks(tableName, id) 
     .stream() 
     .anyMatch(fl -> Objects.equals(fl.getFieldName(), fieldName)); 
} 
+0

당신의 것이 더 짧고 병렬화 될 수 있습니다. 잘 했어. –

0
private boolean fieldLockExists(String tableName, String fieldName, Integer id) 
{ 
    return getFieldLocks(tableName, id).stream(). 
        filter(s->s.equals(fieldName)). 
        findfirst().isPresent(); 
} 
관련 문제