class Text1
{
public static void main(String[] args)
{
getCharCount("sfadafsaffsdafsdafsd");
}
public static void getCharCount(String str)
{
//int count=0;
Map<Character,Integer>map=new TreeMap<Character,Integer>();
char[] chs=str.toCharArray();
for(int x=0;x<str.length();x++)
{
Character ch=chs[x];
Integer value=map.get(ch);
if(value!=null)
value=value+1;
value=1;
map.put(ch,value);
}
/*
if(map.get(ch)==null)
map.put(ch,1);
else
{
value=value+1;
map.put(ch,value);
}
*/
}
Set<Map.Entry<Character,Integer>> entrySet=map.entrySet();
Iterator<Map.Entry<Character,Integer>> it=entrySet.iterator();
while(it.hasNext())
{
Map.Entry<Character,Integer>relation=it.next();
Character key=relation.getKey();
Integer value=relation.getValue();
System.out.println(key+"--"+value);
}
}
}注释的部分可以编译通过,也能获取正确的结果。(求字符串中每个字母的个数)
为什么简化的那部分不能呢?连编译都不能通过一直没搞明白,希望大牛能给看一下。想知道为什么。
{
public static void main(String[] args)
{
getCharCount("sfadafsaffsdafsdafsd");
}
public static void getCharCount(String str)
{
//int count=0;
Map<Character,Integer>map=new TreeMap<Character,Integer>();
char[] chs=str.toCharArray();
for(int x=0;x<str.length();x++)
{
Character ch=chs[x];
Integer value=map.get(ch);
if(value!=null)
value=value+1;
value=1;
map.put(ch,value);
}
/*
if(map.get(ch)==null)
map.put(ch,1);
else
{
value=value+1;
map.put(ch,value);
}
*/
}
Set<Map.Entry<Character,Integer>> entrySet=map.entrySet();
Iterator<Map.Entry<Character,Integer>> it=entrySet.iterator();
while(it.hasNext())
{
Map.Entry<Character,Integer>relation=it.next();
Character key=relation.getKey();
Integer value=relation.getValue();
System.out.println(key+"--"+value);
}
}
}注释的部分可以编译通过,也能获取正确的结果。(求字符串中每个字母的个数)
为什么简化的那部分不能呢?连编译都不能通过一直没搞明白,希望大牛能给看一下。想知道为什么。
解决方案 »
- 生产者与消费者问题,wait与notify多线程协作出问题,请大家帮我纠正下。
- 请crazycy(代言人)来接分,原贴http://community.csdn.net/Expert/topic/4322/4322260.xml?temp=.3735315
- 依次读取一个目录下的文件,如何做到?
- 请问QQ的登陆框是什么语言做出来的???
- +++一个java方法,包括了300个参数,编译时出错“too many parameter”,怎么办??
- 请问;怎样用JavaScript语言提取file输入框中文件的后缀?急!
- 如何动态增加、删除对象?
- ***为什么oracle中blob类型超过4036就存不进去?急!!!***
- 关于异常的一段代码,为什么不能正常运行
- 二分法查找排序代码详解
- 关于JNI char*转jstring乱码
- 急求解java多线模拟同步的问题
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;public class Test{
public static void main(String[] args){
getCharCount("sfadafsaffsdafsdafsd");
}
public static void getCharCount(String str){
// int count=0;
Map<Character,Integer>map = new TreeMap<Character,Integer>();
char[] chs=str.toCharArray();
for(int x=0;x<str.length();x++){
Character ch=chs[x];
Integer value=map.get(ch);
map.entrySet();
if(value!=null)
value=value+1;
value=1;
map.put(ch,value);
}
/*
* if(map.get(ch)==null) map.put(ch,1); else { value=value+1;
* map.put(ch,value); }
*/
//}多了一括号吗?
Set<Map.Entry<Character,Integer>> entrySet= map.entrySet();
Iterator<Map.Entry<Character,Integer>> it=entrySet.iterator();
while(it.hasNext()){
Map.Entry<Character,Integer>relation=it.next();
Character key=relation.getKey();
Integer value=relation.getValue();
System.out.println(key+"--"+value);
}
}
}
你看看这样替换注释的部分可以不啊 。。
if(value==null)
value=1;
map.put(ch,--value+1);
但是添加的value有点自己都搞不明白只知道那样结果会正确
你帮忙看一下嘛。。
value=1;
map.put(ch,--value+1);
不建议这么写,这么写的习惯不好if(value == null) {
map.put(ch, 1);
} else {
map.put(ch, value + 1);
}
value=1;
map.put(ch,--value+1);
你这样写的结果就是你value不为null的时候记录的值不变了,你也可以写成这个样子
if(value == null) {
value = 0;
}
map.put(ch, value + 1);
这样的话为null记录的是1,不为null的就加了1
for (int x = 0; x < str.length(); x++) {
Character ch = chs[x];
Integer value =map.get(ch);
if (value == null){
value = 0;
}
map.put(ch, ++value);
}原来还有小问题。这样可能,这种优化感觉无所谓,看着舒服就行。