2012-12-24 3 views
2

문제가 있지만 지금은 해결할 방법이 없습니다. 내가 가지고있는 문자열은 약 300 문자열입니다. 예 :문자열 비교 및 ​​다른 문자열 반환

  1. "USNEWYRK";
  2. "USWSHGNT";

그리고 내가해야 할 일은 이러한 문자열 중 하나가 문자열을 요청하고이 같은 것을 반환하는 경우 비교입니다 :

  1. "미국, 뉴욕";
  2. "미국, 워싱턴";

그래서 좋은 해결책이 있습니까? 그리고 나는 자바 1.7을 사용할 수 없다. 단지 1.6.

+0

"USNEWYRK -> USA, New York"과 같이 현재 문자열 각각에 대해 "디코딩"을 가지고 있습니까? 아니면이 약어를 자동으로 사용하지 않아야합니까? – Andremoniy

+0

그래, 가지고있는 것은 Android 앱입니다. 외부 저장소에서 파일을 읽고, 파일 이름은 현재 그렇게 있습니다. 그래서 그 파일 이름을 사용하고 일종의 목록, 해시지도, 테이블의 실제 문자열을 찾는 무언가를 만들고 싶습니다. 기본적으로 더 많은 파일 이름을 변환하려면 – copied

+0

사실,이 문제는 Android를 언급하지 않습니다. 자바 및 알고리즘에 대한 일반적인 질문입니다. – Andremoniy

답변

5

값의 키 맵을 작성한 다음 첫 번째 값을 키로 조회하면 값이 제공됩니다.

또는 열거 형을 만들 수 있습니다. 열거 형은 키이고 열거 형의 toString은 값입니다.

나는이 상황에서 열거 형지도 솔루션을 선호한다. 다른 클래스에서

public abstract class LocationHelper { 
    public static Map<String, String> locations = new HashMap<String, String>(); 

    static { 
     //either put individual elements into the map or 
     //read in from external file etc. 
    } 
} 

지도

예는 다음 다음을 수행하여 값을 얻을 수 있습니다.

System.out.println(LocationHelper.locations.get("USNWYRK")); 

이이, 그것은지도처럼 정적 변수를 채우기위한 유용한 정적 초기화입니다있는 static { } 블록에 익숙하지 않은 사람은 "미국, 뉴욕"

를 인쇄합니다. 이것은 각 인스턴스의 사전 생성자 이니셜 라이저 인 insitance initializer { }과 다릅니다.

+0

감사합니다. 어떤 예도 시도해 보시겠습니까? – copied

+0

Jon에게 매우 감사하지만 의심 스럽습니다. 이유는 무엇입니까? 당신은 간단한 변수 대신 래퍼 클래스를 만들 수 있습니까? – HMarioD

+1

@HMarioD이 instan에서 래퍼 클래스를 사용했습니다. 다른 여러 클래스에서 변수를 사용해야하는 경우에 대비하여 그러나 그것이 단 하나의 클래스에만 관련이 있다면 그것은 당연히 그 클래스 내에 변수로 포함될 수 있습니다. 나는 static initializer를 더 잘 보여주기 때문에 클래스 코드를 포함시켰다. –

0

모든 종류의 해시 테이블 /지도가 작동해야합니다. 키를 첫 번째 문자열로 만들고 두 번째 문자열의 값을 만듭니다.

덧붙여 말하자면 JSON 문자열에 모든 키와 값을 입력하고 JSON 판독기를 사용하여지도 객체로 변환하거나 각 객체를 개별적으로 입력 할 수 있습니다.

2

쉬운 유지 관리를 위해 stringCode;stringValue이 포함 된 CSV 파일을 만든 다음 응용 프로그램이 시작될 때이 파일에서 해시 테이블/맵을 작성할 수 있습니다. 이 값은 사용자가 알 필요가 무엇이든지 돌아 쉬워야한다 매핑되면

USNEWYRK;USA, New York 
USWSHGNT;USA, Washington 

:

이 같을 것이다.

0

의견에 대한 설명에 따르면 다음 결정을 제안 할 수 있습니다.

위에서 언급 한 파일 이름은 일종의 약어입니다. 당신은 그들 모두를 조사 할 수 있었고이 이름들에 사용 된 몇 가지 경험적 규칙들을 표시 할 수있었습니다.

예를 들어, 모든 이름이 2 문자로 시작하는 국가 이름을 가정 할 수 있습니다. 이것은 첫 번째 가설입니다. 다음은 이름의 마지막 6 문자는 도시의 약어입니다.

이 도시 약어는 다음과 같은 간단한 규칙을 사용하여 구성됩니다. 도시 이름이 6 문자 이상인 경우 문자열 끝에있는 첫 번째 모음 문자를 제거하십시오. 다른 문자열 준비를 마칩니다. 준비된 문자열이 6 문자 길이가 될 때까지이를 반복하십시오.

요약하면 문자열 세트가 필요합니다. 1) 국가 이름 집합; 2) 도시 이름 집합 (또는 도시 이름의지도, 여기서 key는 국가 이름 임). 위에서 언급 한 규칙을 사용하면 처음 2 자의 국가 이름에 따라 각 도시 이름과 약어를 비교하려고합니다.

+0

이것이 좋은 접근 방법이라는 데 동의하지만, 이것은 그가 제시 한 두 가지 사례에서 알 수 없습니다. –

+0

실제 이름은 다소 다르므로 예를 들어 벨기에, 브뤼셀 = "BXBRUSSL.txt" – copied