2011-04-28 4 views
-1

S'il vous plaît aidez-moi à résoudre ce problème. Le problème est que j'ai une table qui stocke tous les types d'alarmes maintenant j'ai besoin de connaître le nombre d'une alarme particulière. par exemplepour compter le nombre

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

comme indiqué dans le tableau ci-dessus, je dois compter combien de fois dire (aaa) a répété dans ce cas son est de 4 même pour bbb dans ce cas, il est 2 et ccc il est 2.

Comment résoudre ce problème?

+0

Qu'est-ce que 'alarmes'? est-ce un tableau ou une liste? –

+3

Est-ce réellement un problème SQL? – Liv

+4

Est-ce que ce sont les devoirs? –

Répondre

2

Quelque chose comme ceci:

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

Pourquoi Hashtable et pas HashMap? – Ishtar

+2

N'utilisez plus Hashtable, c'est une librairie de restes qui a beaucoup de meilleures alternatives. Dans ce cas, utilisez plutôt HashMap à la place des mentions d'Ishtar. Hashtable a une synchronisation maladroite sur toutes les méthodes d'ajout/suppression –

0

Essayez de itérer sur cette liste d'alarme. Utilisez une HashMap qui contient le nom et le nombre d'alarmes. Lorsque vous obtenez une alarme, vérifiez-la sur HashMap, si elle existe, augmentez le nombre sinon placez-la dans cette HashMap et réglez count comme 1, répétez jusqu'à la fin. Lorsque vous parcourez ce HashMap, vous pouvez voir ceux qui ont alarmé et combien de fois.

+0

Si vous vous trompez en écrivant le code, dites-le, vous pouvez le réparer et donner des conseils. – kamaci

0

Pouvez-vous donner un peu plus d'informations sur la façon dont les données sont réellement stockées?

Si elle est stockée exactement comme vous l'avez mentionné ici, qui est aussi une chaîne séparée par des espaces, puis, vous pouvez faire quelque chose comme ceci:

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

Je ne suis pas sûr que votre utilisation de la table de mots indique une table de base de données, mais je pense que oui. Si c'est le cas, je suggérerais d'écrire SQL qui va juste obtenir le nombre d'occurrences directement à partir de la table.

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

Sinon, si vous devez le faire pour chaque type d'alarme, vous pouvez faire une requête comme:

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

Et à partir de là, vous pouvez stocker dans un HashMap<String, Integer> que d'autres ont dit . Bien sûr, si vous ne voulez pas dire une table de base de données, alors n'hésitez pas à ignorer cette réponse. =)

Questions connexes