2011-02-08 6 views
0

저는 Java 기반의 단어 기반 게임 응용 프로그램을 만들려고합니다. 나는 몇 가지 기존 질문을 탐색하고 단어 목록을 얻는 방법에 대한 아이디어를 얻었다.임의 단어 검색을위한 데이터 구조

How to pick a random english word from a list

Random word selection

내 동기는 임의의 단어를 생성하는 것입니다 : 나는 질문의 일부는 언급했다. 텍스트 파일로 다운로드 한 단어 목록을 얻기 후에, 나는 나에게 내가 생성 된 임의의 정수를 사용하여 조회 할 수 있기 때문에 단어를 줄 수있는

Map<String, Integer> m = new HashMap<String, Integer>(); 

를 생성하기 위해 노력하고 있어요.

권장되는 방법입니까, 아니면 단어 목록에서 임의의 단어를 생성하는 더 좋은 방법이 있습니까?

감사합니다.

답변

4

단어 목록을 ArrayList 배열에 고정하고 임의의 색인을 선택하십시오. ArrayList은 사전 파일을 읽을 때 동적으로 커질 수 있으므로 작업하기가 더 쉽습니다.

+0

이 게시물 (http://stackoverflow.com/questions/1518103/hashmap-vs-arraylist-performance-am-i-correct)'HashMap'이 올 때'ArrayList'보다 더 나은 성능을 가지고 있음을 이해할 수있었습니다. 무작위 검색. 내가 잘못? – bdhar

+0

@bdhar 안타깝게도 이미 HashMap에서 원하는 것을 얻을 수 없다. – dhblah

+0

@bdhar 인덱스로 항목을 찾고 임의의 키를 사용하는 경우에는 차이가있다. 당신의 경우 인 전자의 경우 배열 (또는 ArrayList)보다 우수합니다. – NPE

1

목록이나 문자열 배열을 사용하여 큰 단어 목록으로 채운 다음 임의의 숫자를 생성 한 다음 그 임의의 숫자를 색인으로 사용하여 목록에서 단어를 선택할 수 있습니다. HashMaps을 사용하면 지정된 키에 관련 지을 수 있었던 값을 액세스 할 수 있기 때문에

1
  1. 귀하의 제안지도는 값과 연관된 키에 액세스 할 수 없습니다, 당신의 목표를 달성하지 않습니다. 아무리지도를 가져 얼마나 큰, 걸리는 시간이 값을 검색 없음 : 당신이는 HashMap을 사용하는 경우 그래서, Map<Integer, String>

  2. 다른 데이터 구조를 통해의 HashMap의 가장 큰 장점은 일정한 조회 시간이어야한다 주어진 키는 그대로 유지됩니다. 목록과 크기가 커질수록 요소를 찾는 데 걸리는 시간이 늘어날 수있는 정렬되지 않은 ArrayList와 대조하십시오. 그러나 특정 단어, 단지 단어를 찾는 것이 아니기 때문에 HashMap 혜택은 귀하에게 해당되지 않습니다. 다른 사람이 말했듯이

  3. , 가장 좋은 방법이 될 것으로 보인다 :

ArrayList의 단어 = 새로운 ArrayList를();

// 추가 모든 단어

무작위 연구 = 새로운 무작위() 난수

를 생성하는 객체 //

문자열 randomWord = 그런 단어 (r.nextInt (words.size())) ;

관련 문제