2013-01-08 5 views
-3

H iguys. 나는 사용자 ID를 구문 분석하고 txt 파일에 tham을 추가하는 루프를 가지고있다. 이 txt에이 ID가 있는지 확인하는 것보다 (다음 구문 분석 동안) 가장 좋은 방법은 무엇입니까? 파일의 크기 경우는 응용 프로그램 5메가바이트보다 큰이txt 파일의 번호를 확인하는 가장 빠른 방법

+3

지금까지 시도한 적이 있습니까? [faq]와 [ask]를 읽으십시오 –

+0

숙제처럼 보입니다. –

+1

자세한 내용이 필요합니다. 파일이 기록 된 것보다 훨씬 더 자주 읽습니까? ID를 파일에 기록 할 때 정렬하고 빠른 검색을 위해 색인을 적용하는 것이 유용 할 수 있습니다. – itsme86

답변

0

당신은 아마를로드해야 매달려 시작할 때 TXT의 크기는 내가 나열하는 ID를 추가하려고 5 -..... 메가

에서 상승하지만, 텍스트 파일에있는 ID를 일부 콜렉션에 넣고 콜렉션에 ID가 들어 있는지 확인하십시오.

솔직히 그보다 훨씬 효율적인 방법이 있다고 생각하지 않습니다.

3

HashSet<int> 또는 HashSet<string>을 사용하고 ID를 수집 한 다음 그 결과를 텍스트 파일에 씁니다.

PS : HashSet의이 O 것을 주 (1) 목록은 O (n)이

+0

예. 이. Hashset 은 매우 부족합니다. –

0

내가 믿는 엄지 손가락의 규칙은 공간과 시간을 거래하는 것 인 반면. 복사 속도를 높이고 파일을 계속보고 싶지 않은 경우 ID가 저장된 배열 또는 연결된 목록 또는 해시 테이블을 유지 관리 할 수 ​​있습니다.

+0

배열을 저장하는 것은 그가 현재 사용하고있는'List'보다 좋을 것이고,'LinkedList'를 사용하면 훨씬 더 나 빠질 것입니다. – Servy

+0

나는 그가 전체 텍스트 파일을 횡단하여 이드를 검사한다고 생각 했으므로 어떤 콜렉션을 사용하는 것이 더 좋을 것이다. 액세스 시간 또는 O (_n_)가 컬렉션과 컬렉션이 다르다는 것을 알고 있습니다. –

+0

질문은 파일을 한 번만 반복해서 검색하는 것이 아니라 해당 값을 적절한 컬렉션의 메모리에 저장하는 것이 좋습니다. – Servy

0
var userIsAlreadyThere = File.ReadLines(path).Contains(userid); 
관련 문제