ArrayList和HashMap的结合使用,arraylisthashmap
分享于 点击 22973 次 点评:286
ArrayList和HashMap的结合使用,arraylisthashmap
2.分析以下需求,并用代码实现:
(1)利用键盘录入,输入一个字符串
(2)统计该字符串中各个字符的数量
(3)如:
用户输入字符串"If~you-want~to~change-your_fate_I_think~you~must~come-to-the-dark-horse-to-learn-java"
程序输出结果:-(9)I(2)_(3)a(7)c(2)d(1)e(6)f(2)g(1)h(4)i(1)j(1)k(2)l(1)m(2)n(4)o(8)r(4)s(2)t(8)u(4)v(1)w(1)y(3)~(6)
基本解决思路:
1,用ArrayList接收输入的字符
2,对输入的字符串转换成字符数组,统计各个字符的总出现数,
3,将 字符:字符个数 存储到hashMap中
4,遍历输入hashmap表即可
主程序大致框架:
public static void main(String[] args) {
List<String> array = new ArrayList<String>();
Map<Character,Integer> map = new HashMap<Character,Integer>();
function_1(array);//键盘接收字符串
function_2(array,map);//将字符串转换成字符数组,并将统计的字符和字符个数存储到HashMap中
function_3(map); //遍历HashMap,输出最后结果
}
funciton_1()的主要代码如下:
//接收字符串函数,输入字符串,直到输入 end 为止
public static void function_1(List<String> array) {
Scanner sc = new Scanner(System.in);
while(true) {
String str = sc.next();
if("end".equals(str)) {
sc.close();
break;
}
array.add(str);
}
}
function_2()的主要代码如下:
public static void function_2(List<String> array,Map<Character,Integer> map) {
//创建字符数组接收字符串转换过来的字符数组
char[] ch = array.toString().toCharArray();
for (int i = 0; i < ch.length; i++) {
System.out.print(ch[i]);
}
System.out.println("\n===================================");
int[] number = new int[ch.length];
//双重for循环统计字符个数
//由于String.toCharArray()是把"[","]",给算上的,所以将最开始和最后的括号去掉
for (int i = 1; i < ch.length-1; i++) {
int count = 1; //字符最开始有一个
for (int j = 1; j < ch.length-1; j++) {
if(ch[i] == ch[j])
number[i] = count++;
}
}
//将统计的字符个数还有数字添加到HashMap中
//由于String.toCharArray()是把"[","]",给算上的,所以将最开始和最后的括号去掉
for (int i = 1; i < number.length-1; i++) {
map.put(ch[i], number[i]);
}
}
function_3()的主要代码如下:
public static void function_3(Map<Character,Integer> map) {
//遍历map集合,输出相应的键值对
for(Map.Entry<Character,Integer> entry : map.entrySet()) {
char c = entry.getKey();
Integer in = entry.getValue();
System.out.print(c+"("+in+")"+" ");
}
}
我的程序的运行结果如下:
相关文章
- 暂无相关文章
用户点评