2011-11-19 2 views
2

나는 1000 단어 목록을 가지고 있습니다. 해당 목록에서 n 개의 임의로 선택한 단어가있는 배열을로드해야합니다 (반복 할 수 없음). 그 일을하는 가장 좋은 방법은 무엇입니까?Android 배열에 문자열로드

내 아이디어 :

1) String 배열을 만들 수 R.arrays에 단어를로드합니다. collections.shuffle을 사용하여 배열을 섞은 다음 첫 번째 n 개의 항목을 가져옵니다. 지금 당장이 메서드를 사용하여 1000 개의 단어로 초기 배열을로드하는 메모리 문제가 있습니다.

2) 단어를 텍스트 파일로로드하고 각 단어를 String 배열로 읽어들입니다. 동일한 메소드를 사용하여 처음 n 개의 항목을 가져옵니다.

3) 하드 코드 문자열 배열로 단어의 입력 (I)는 물론 그 출력을 얻을 수있는 스크립트를 사용하십시오. 동일한 메소드를 사용하여 처음 n 개의 항목을 가져옵니다.

더 좋은 방법이 있습니까? 메모리 사용에 대한 주로 걱정하고 계산 속도을 양도하는 경우에는

답변

1

, 여기가 당신을 얻을 것이다 알고리즘입니다.

단어 당 문자 수가 고정 된 한 줄에 한 단어 씩 텍스트 파일에 단어를 유지하고 고정 단어 글자 크기를 보장하기 위해 각 단어를 공백으로 채우는 경우 s으로 전화하십시오.

  1. 최대 크기 n들의 어레이를 만들기 k
  2. 탐색
  3. 이 그것을 1에서 1000 사이의 난수 전화 받기 1000 개 단어를 포함하는 파일에 대한 스트림 리더 그것을 w
  4. 오픈 호출 파일 스트림에 k*s을 배치하고 다음 문자를 가져옵니다.
  5. 배열에 아직 없으면 w에 단어를 추가하십시오.
  6. w 어레이가 꽉 찬 경우 (즉, 크기 = n) 완료되었습니다. 그렇지 않은 경우 3 단계로 돌아갑니다.

Google에 알리는 방법을 알려주세요. 해피 코딩!

+0

그것은 일하기에 충분히 미친 듯합니다. R.arrays에서 문자열을 직접로드 할 때 안드로이드가 불평하는 이유는 무엇입니까? 1000 개의 문자열이 실제로 많은 양의 메모리를 차지합니까? – Allen

+0

예 문자열이 상당히 비쌉니다. 기억이 걱정 될 때 나는 가능한 한 그들에게서 멀리 떨어져있을 것입니다. –