그것은 nooby 질문이있을 수 있습니다,하지만 난 전에 그것을 필요로 적이 :스와핑 스위치의 경우는
내가 여러 문자열을 가지고 있고 주어진 것들에 비교하고 싶다. ..
언뜻보기에 그것은 사용 가능한 모든 항목을 확인하는 스위치/사례 구성으로 이어질 것입니다.
이러한 문자열을 키/값 데이터로 교환하는 좀 더 우아한 방법이 있습니까?
접견, poeschlorn
그것은 nooby 질문이있을 수 있습니다,하지만 난 전에 그것을 필요로 적이 :스와핑 스위치의 경우는
내가 여러 문자열을 가지고 있고 주어진 것들에 비교하고 싶다. ..
언뜻보기에 그것은 사용 가능한 모든 항목을 확인하는 스위치/사례 구성으로 이어질 것입니다.
이러한 문자열을 키/값 데이터로 교환하는 좀 더 우아한 방법이 있습니까?
접견, poeschlorn
업데이트 : 내 나쁜. 나는 이것을 대소 문자를 구별하지 않는 검색으로 잘못 읽었다.
대소 문자를 구분하는 것은 쉽습니다. Java는 문에 String
을 아직 지원하지 않습니다.
if (string1.equals(string2)) {
...
} else if (string1.equals(string3)) {
...
}
또는 루프로 : 가장 쉬운 해결책은
물론String[] matches = new String[] {
"abcd",
"efgh",
"ijkl"
};
for (String match : matches) {
if (matches.equals(string)) {
...
}
}
,이 선형 (O (N))과 확장되지 않고 단순하고 간단한 충분하다 케이스의. 보다 나은 솔루션은 해시 기반 검색 사용하는 것이다
Set<String> matches = new HashSet<String>();
matches.add("abcd");
matches.add("efgh");
matches.add("ijkl");
if (matches.contains(string1)) {
...
}
이것은 거의 선형 (O (1))를 검색하고 String
의 다수 훨씬 더 확장된다.
많은 문자열이있는 경우 일치 메커니즘이 상당히 느릴 수 있습니다 - O (n) - 미리 정의 된 HashSet 또는 HashMap을 사용하면 예상되는 O (1) 조회가 발생합니다. –