package test;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 用java创建一个List集合用java创建一个list集合,保存'a b a b c a c b a a b'。
* 然后使用Map集合,key保存对应的字母,value保存对应字母的出现次数。
* @author ASUS
*
*/
public class Test15 {
public static void main(String[] args) {
List<Character> list = new ArrayList<Character>();
list.add('a');
list.add('b');
list.add('a');
list.add('b');
list.add('c');
list.add('a');
list.add('c');
list.add('b');
list.add('a');
list.add('a');
list.add('b');
Map<Character,Integer> map = new HashMap<Character,Integer>();
for(Character ch : list){
if(map.containsKey(ch)){
int num = map.get(ch);
num+=1;
map.put(ch, num);
}else{
map.put(ch, 1);
}
}
System.out.println(map);
}
}
追问为啥报错啊
谢谢
追答啥错?
追问![](https://video.ask-data.xyz/img.php?b=https://iknow-pic.cdn.bcebos.com/4bed2e738bd4b31c027823308cd6277f9f2ff8f1?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto)
hM.put()报错
![](https://video.ask-data.xyz/img.php?b=https://iknow-pic.cdn.bcebos.com/8c1001e93901213f5787f8575fe736d12e2e9581?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto)
不是,应该是 for(Character ch :list)这句里面的list报错
追答你list里面装的String吧?你拿泛型是字符的Map,去装字符串肯定是有问题的,但是问题是索引越界,,你可以先把list的泛型改成字符,或者吧map的key的泛型改成字符串,再看一下,你仿造我给你写的,就不会错
追问我改成统一的泛型了,但是又有新的错误了,就是list.add又报错了,这是怎么回事儿呢
![](https://video.ask-data.xyz/img.php?b=https://iknow-pic.cdn.bcebos.com/c9fcc3cec3fdfc03af915233df3f8794a5c2264b?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto)
追答字符是 --->'a' 对应的泛型是Character
字符串是-----> "a" 对应的泛型是String
你现在list的泛型是Character了,所以你只能添加字符了,,所以add('a')-->而不是add("a")
追问您好,还在吗?可以再帮我解决一个代码问题么?😊