2012-02-04 8 views
1

내 문제는 성명서는 데이터를 얻을 때 데이터 구조에 저장하고 카운터를 유지하는 것과 비슷합니다. 이와 유사한 것이 이미 존재하는 경우 데이터 구조에서 유사한 것을 검색하면 카운터가 증가합니다 내 데이터에는 제한이 없습니다. 데이터는 때로는 매우 큰 수 있습니다. 그래서 자바의 초급되고 어떤 데이터 구조를 잘 내 문제에 대한 효율적인 알고 싶습니다.내 응용 프로그램에 가장 적합한 Java 데이터 구조는 무엇입니까?

답변

3

"데이터"를 키로, 카운터를 값으로 사용하여 HashMap을 원합니다. 이 O (1) "포함"확인, 검색 및 삽입 시간을 가지고 있기 때문에

http://docs.oracle.com/javase/1.4.2/docs/api/java/util/HashMap.html

그것이 좋은 선택입니다 이유입니다. 데이터를 정렬 할 필요가없는 한 훌륭한 선택입니다.

테스트되지 않은 코드를 시작해야합니다. String을 데이터 유형으로 바꿉니다. 맞춤 클래스 인 경우 hashCode()equals()을 오버로드해야합니다.

HashMap<String, Integer> map = new HashMap<String, Integer>(); 

... 

Integer i = map.get(data); 
if(i == null) { 
    map.put(data, 1); 
} else { 
    map.put(data, i + 1); 
} 
1

소리 당신은 HashMap<YourClass, Integer> (link)을 사용할 필요가있다.

값은 카운터이므로 정수입니다. 키가있는 항목이 있는지 확인하십시오. 그렇지 않으면 값을 1로 추가하고, 그렇지 않으면 이전 값에 1을 더한 값을 추가합니다.

Integer 대신 값을 최적화하여 정수를 래핑하고 증가시킬 수있는 사용자 정의 클래스로 만들 수 있습니다. 이렇게하면 증가 할 때마다 해시 맵에 삽입 할 필요가 없습니다.

+0

멋진 최적화; 그런 생각을하지 않았어. +1 –

관련 문제