2011-04-28 4 views
-1

이 문제를 해결하는 데 도움을주십시오. 문제는 모든 종류의 알람을 저장하는 테이블이있어서 특정 알람 하나를 알아야한다는 것입니다. 예컨대, 상기 표에 나타낸 바와 같이부터 카운트 번호

alarms 
--------- 
aaa 
aaa 
aaa 
ccc 
ccc 
aaa 
bbb 
bbb 

위한 I이 경우 반복 밝혔 횟수 (AAA)을 카운트 할 필요는이 2이고,이 경우 BBB 비슷하게 4 및 CCC 대 2이다.

이 문제를 해결하는 방법은 무엇입니까? 이 같은

+0

'알람'이란 무엇입니까? 그것은 배열 또는 목록입니까? –

+3

이것은 실제로 SQL 문제입니까? – Liv

+4

이 숙제가 있습니까? –

답변

2

뭔가 :

Hashtable<String, Integer> hash = new Hashtable<String, Integer>(); 
for (String alarm : alarms) { 
    Integer count = hash.get(alarm); 
    if (count == null) count = 1; 
    else count++; 
    hash.put(alarm, count); 
} 
+2

왜 HashMap이 아닌 Hashtable입니까? – Ishtar

+2

Hashtable을 더 이상 사용하지 마십시오. 더 나은 대체 방법이있는 나머지 라이브러리입니다. 이 경우 Ishtar에서 언급 한 것처럼 HashMap 를 사용하십시오. Hashtable은 모든 추가/제거 방법에 대해 어색한 동기화가 있습니다. –

0

시도는 알람 목록을 반복합니다. 알람 이름과 카운트를 보유하는 HashMap을 사용하십시오. HashMap에서 알람을 확인하면 카운트가 증가하면 HashMap에 넣고 카운트를 1로 설정하고 끝까지 반복합니다. 그 HashMap을 반복 할 때 얼마나 많은 시간과 알람이 발생했는지 알 수 있습니다.

+0

코드를 작성하는 데 혼란을 겪는 경우이를 수정하고 조언을 제공합니다. – kamaci

0

데이터가 실제로 저장되는 방법에 대한 정보를 조금 더 줄 수 있습니까? 여기에 언급 한 바와 같이이 정확히 저장되어있는 경우

, 즉 공백으로 구분 된 문자열로입니다, 다음, 당신은 같은 것을 할 수 있습니다

String alarms = "aaa aaa aaa ccc ccc aaa bbb bbb"; 
String[] alarmCounter = alarms.split(" "); 

for (String str : alarmCounter) 
{ 
System.out.println("There are " + str.length + " alarms of type " + str.charAt(0)); 
} 
1

을 나는 단어 테이블의 사용 모르겠어요 데이터베이스 테이블을 나타냅니다,하지만 나는 그것을 생각하고 있어요. 그렇다면 SQL을 작성하여 테이블에서 직접 어커런스 수를 얻는 것이 좋습니다.

select alarms, count(alarms) from table group by alarms; 

그리고 당신이 HashMap<String, Integer>에 저장할 수 거기에서

다른 사람들이 말했듯이 : 각 알람 유형에 대해이 작업을 수행해야하는 경우

select count(*) from table where alarms = 'aaa'; 

또는, 당신은 같은 쿼리를 할 수 . 물론 데이터베이스 테이블을 의미하지 않는다면이 대답을 무시하십시오. =)