最近写了一个程序,主要功能就是输入一堆字符,然后统计每个字符出现的次数,我是用HashMap去实现的,但是写完了发现有点笨,代码不是那么简单,是不是自己忽略了最简单的实现方式?请大家帮忙指点一下吧!多谢!!import java.util.HashMap;
import java.util.Scanner;
import java.util.Collection;
import java.util.Set;public class 找重复 { public static void main(String[] args) {
Scanner s=new Scanner(System.in);
System.out.println("Please enter your contents!");
String str1=s.next();
HashMap<Integer,Character> hm=new HashMap<Integer,Character>();
for(int i=1;i<=str1.length();i++){
hm.put(i, str1.charAt(i-1));
}
System.out.println(hm);
Collection<Character> coll=hm.values(); int count=1;
for(int j=1;j<=str1.length();j++){
if(hm.get(j)==null){
continue;
}
for(int k=j+1;k<=str1.length();k++){
if(hm.get(k)==null){
continue;
}
if(hm.get(j)==hm.get(k)){
count+=1;
hm.remove(k);
}
}
System.out.println(hm.remove(j)+"的个数为:"+count);
hm.remove(j);
count=1;
}
}
}
import java.util.Scanner;
import java.util.Collection;
import java.util.Set;public class 找重复 { public static void main(String[] args) {
Scanner s=new Scanner(System.in);
System.out.println("Please enter your contents!");
String str1=s.next();
HashMap<Integer,Character> hm=new HashMap<Integer,Character>();
for(int i=1;i<=str1.length();i++){
hm.put(i, str1.charAt(i-1));
}
System.out.println(hm);
Collection<Character> coll=hm.values(); int count=1;
for(int j=1;j<=str1.length();j++){
if(hm.get(j)==null){
continue;
}
for(int k=j+1;k<=str1.length();k++){
if(hm.get(k)==null){
continue;
}
if(hm.get(j)==hm.get(k)){
count+=1;
hm.remove(k);
}
}
System.out.println(hm.remove(j)+"的个数为:"+count);
hm.remove(j);
count=1;
}
}
}
import java.util.Iterator;
import java.util.Map;
import java.util.Set;/*
统计一个字符串中每个字符的数量
"aabcdeeedaaa"
a:5
b:1
... ...
*/
public class CountCharDemo {
public static void main(String[] args) {
Map<Character, Integer> map =
count("aabbcdeeeaaa");
System.out.println(map);
//MAP的迭代 1
Set<Map.Entry> set = (Set)map.entrySet();
Iterator i = set.iterator();
while(i.hasNext()){
Map.Entry entry=(Map.Entry)i.next();
System.out.print("字符"+entry.getKey());
System.out.println("数量:"+entry.getValue());
}
//MAP的迭代 1
Set<Character> keys = map.keySet();
Iterator ite = keys.iterator();
while(ite.hasNext()){
char c = (Character)ite.next();
int val = map.get(c);
System.out.print("字符:" + c);
System.out.println("数:" + val);
}
}
public static Map<Character, Integer> count(
String str){
Map<Character, Integer> map =
new HashMap<Character, Integer>();
for(int i=0; i<str.length(); i++){
char c = str.charAt(i);
if(map.containsKey(c)){//检查 c 是否被统计过
int val = map.get(c)+1;//取出原先的统计结果并加一
map.put(c, val);//将新结果送回map
}else{ //c没有被统计过, 为map增加新纪录:"c:1"
map.put(c, 1);
}
}
return map;
}
}
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("Please enter your contents!");
String str1 = s.next(); Map<Character, Integer> hm = new HashMap<Character, Integer>();
char ch;
for (int i = 0; i < str1.length(); i++) {
ch = str1.charAt(i);
Integer times = hm.get(ch);
if (times == null) {
hm.put(ch, 1);
} else {
hm.put(ch, times.intValue() + 1);
}
} for (Map.Entry<Character, Integer> entry : hm.entrySet()) {
System.out.println(entry.getKey() + "的个数为:" + entry.getValue());
}
}
String[] arr = new String[] { "a", "b", "b", "c", "b", "a" };
Map<String, Integer> map = new HashMap<String, Integer>();
for (String s : arr) {
if (map.containsKey(s)) {
map.put(s, map.get(s) + 1);
} else {
map.put(s, 1);
}
}
for (String key : map.keySet()) {
System.out.println(key + ":" + map.get(key));
}