2012-04-18 4 views
28

String이 있는지 어떻게 확인할 수 있습니까?문자열이 문자열의 ArrayList에 있는지 확인하십시오.

결과가 있으면 1temp을 지정하고 그렇지 않으면 2을 할당하고 싶습니다.

내 현재 코드는 다음과 같습니다

Integer temp = 0; 
List<String> bankAccNos = new ArrayList<String>();//assume list contains values 
String bankAccNo = "abc"; 
for(String no : bankAccNos) 
    if(no.equals(bankAccNo)) 
     temp = 1; 
+0

왜 그냥 설정 온도 시작 부분에서 2로? 왜 int 대신 object Integer를 사용해야합니까? 솔루션은 내가 말한 것을 바꾼다면 충분히 좋아 보인다. – tskulbru

+0

당신이 이미 작성한 것은 else 문이 누락되었다는 것을 제외하고는 작동하는 해결책이다. 또한 문자열 비교는 대소 문자를 구분하므로 제대로 작동하지 않으면 문제가 될 수 있습니다. 또한, 같은 제안을 포함하는 사용하는 다른 유효한 접근 방식입니다. –

+0

@ JimmyGustafsson : 예 남자 나는 그 일을하고 있지만 혼란스러워했다 ... 어쨌든 덕분에 – abhi

답변

44
temp = bankAccNos.contains(no) ? 1 : 2; 
+0

'List.contains()'메소드는 동일성이 아닌 신원을 검사합니다. 정수에서는 잘 작동하지만 문자열에서는 OP를 요구하지 않습니다. 목록 전체를 반복하거나 Java8 목록 스트림을 사용하여 더 나은 방법으로 List Michal

+4

@Michal 문서를 참조하십시오. https://docs.oracle.com/javase/8/docs/api/java/util/List.html#contains-java.lang.Object- 신원이 아닌 동등성을 검사합니다 : "이 목록에 적어도 하나 이상의 요소 e가 포함되어있는 경우에만 true를 반환합니다. '(o == null? e == null : o.equals (e))' " – jazzytomato

+0

맞습니다. 나를 고쳐 주셔서 고마워요. – Michal

12

List 인터페이스는 이미 해결했다.

int temp = 2; 
if(bankAccNos.contains(bakAccNo)) temp=1; 

자세한 내용은 List에 대한 설명서를 참조하십시오.

+0

'List.contains()'메서드는 동일성이 아니라 신원을 확인합니다. 정수에서는 잘 작동하지만 문자열에서는 OP를 요구하지 않습니다. 리스트를 반복 해보는 것보다 Java32리스트 스트림을 사용하는 것이'List ' – Michal

+0

@Michal을위한 방법이다. 문서가 다르게 말하는 것처럼 사실이 아니다. 내 대답에 링크를 클릭하고 직접 읽어보십시오. –

0
List list1 = new ArrayList(); 
    list1.add("one"); 
    list1.add("three"); 
    list1.add("four"); 

    List list2 = new ArrayList(); 
    list2.add("one"); 
    list2.add("two"); 
    list2.add("three"); 
    list2.add("four"); 
    list2.add("five"); 


    list2.stream().filter(x -> !list1.contains(x)).forEach(x -> System.out.println(x)); 

출력은 다음과 같습니다

two 
five 
관련 문제