파일에 약 2500 개의 짧은 문구가 있습니다. 내가 가능한 부분 문자열을 입력 할 때 구문을 찾을 수 있기를 원합니다. 내 응용 프로그램에는 텍스트 상자와 구문 목록이 있습니다. 텍스트 상자는 처음에는 비어 있으며 빈 문자열은 모든 문자열의 하위 문자열이므로 목록에 2500 개의 모든 구가 포함됩니다. 텍스트 상자에 입력 할 때 텍스트 상자의 값을 부분 문자열로 포함하는 구만 항상 포함되도록 목록이 업데이트됩니다. 순간상당히 작은 데이터 세트로 Java로 입력 할 때 find를 구현하는 더 좋은 방법이 있습니까?
내가 특별히 구글의 multimap의 중 하나가 :의 가능한 일치에 매핑 된 모든 단일 가능한 문자열로
LinkedHashMultimap<String, String>
. 이것은 (약 1 초)로드하는 데 시간이 걸리고 앞으로는 상당한 공간을 차지해야한다고 생각합니다. (이것은 앞으로 걱정이 될 수도 있습니다.) 조회가 매우 빠릅니다.
다른 데이터 구조 나 전략을 사용하여로드를 줄이고 공간을 적게 차지할 수있는 방법이 있습니까 (조회 속도가 저하 될 수 있음)?
나는 부분 문자열이 어떤 구두점과 함께 시작될 수 있다면 trie가 도움이되지 않을 것이라고 생각합니다. –
@ 마이클 당신은 각 부분의 시작 부분에서 시작하지 않는 부분을 포함하여 모든 하위 문자열을 트라이에 넣기 만하면됩니다. –