2013-04-05 1 views
0

나는 약간의 문제가 있습니다. 나는 비교하기 위해 같은 크기와 문자열을 가진 String List에 있어야한다. 즉, 문자열을 첫 번째 목록과 비교하여 비교 된 문자열의 색인을 목록에서 가져온 다음이 색인의 다른 목록에서 다른 문자열을 가져옵니다.Java 비교 문자열

private String getStringOnIndex(List<String> list1, List<String> list2,String elem) 
{ 
       String elem2; 

     for (int i = 0; i<list1.size();i++) { 

      if(list1.get(i).equals(elem)){ 
       elem2 = list2.get(i); 
       return elem2; 

      } else { 
       return "nope"; 
      } 
     } 

} 

그런 두 문자열을 비교하는 것은 잘못입니까? 또는 == 연산자를 사용해야합니다. 문자열 목록에있는 스타일이 좋지는 않지만 단지 일시적인 해결책이라는 것을 알고 있습니다. 당신이 equals()를 사용해야합니다 도움 :

+0

을 알고 그 라인 : 목록 1 .get (i) .equals (elem)로 인해 NullPointerException이 발생할 수 있습니다. –

+2

질문에 대답하지 않지만 단순히 다음을 할 수는 없습니다. - 'list2.get (list1.indexOf (elem)); 필요한 것? 물론, 당신은 미리 테스트를 해줘야한다.'list1.contains (elem);' –

+0

@RohitJain : 물론 "not found"에 대한 검사도있다. –

답변

10

"문자열 비교"에 대한 특정 질문에 대답하려면 올바른 작업을 수행하십시오. 문자열 내용 비교는 equals()을 사용하여 수행해야합니다. 연산자 ==을 사용하면 내용이 아닌 참조의 동등성 만 검사합니다.

지금하고있는 작업에 대해 나에게 키 - 값 조회처럼 보입니다. 대신이 목록을 저장하는, == 연산자로 객체 참조를 비교하는 오브젝트의 값을 비교하는() 메소드 Map<String, String>

1

== 운영자 자바에 대한 들으 문자열을 비교하기 위해 개체 참조를 비교합니다.

1
if (list1.get(i).matches(elem)).... 
0

사용을 등호을 일부 재 설계를 고려하고있다.

1

항상 두 문자열을 비교하는 equals 메서드를 사용하십시오. 참조를 비교하는 경우 == 연산자를 사용하십시오. 여기서 논의는 유용 할 수 있습니다. How do I compare strings in Java?

0

== 문자열 변수가 new 키워드로 인스턴스화되지 않은 경우에만 조작자가 올바르게 작동합니다. 가정하자 :

String s1 = "abc"; 
String s2 = "abc"; 

그런 다음 s1==s2 잘 작동합니다.

경우

String s1 = new String("abc"); 
String s2 = new String("abc"); 

그런 다음 값을 비교 equals 방법을 사용해야합니다.

마지막으로 항상 equals 메서드를 사용하여 String 값을 비교하는 것이 좋습니다.

+0

Plus : StringBuilder에서 생성 한 문자열도 자동으로 금지되지 않습니다. – TheBlastOne

0

문제는 등호 (즉 올바른 방법입니다), 당신이 첫 번째 반복에서 항상 중지하지 않을 경우, 솔루션 다른 표현을 제거해야되지 않습니다 : 또한,

private String getStringOnIndex(List<String> list1, List<String> list2,String elem) 
{ 
    String elem2; 

    for (int i = 0; i<list1.size();i++) { 
     if(list1.get(i).equals(elem)){ 
      elem2 = list2.get(i); 
      return elem2; 
     } 
    } 
    return "nope"; 

}