黑马程序员技术交流社区
标题:
TreeMap集合中遇到的问题求解
[打印本页]
作者:
demown
时间:
2014-4-26 17:16
标题:
TreeMap集合中遇到的问题求解
本帖最后由 demown 于 2014-4-27 11:11 编辑
package fuxilianxi;
import java.util.*;
public class MapEntry {
public static void main(String[] ages)
{
String s=charCount("aaaaabbdsdfadsfasg");
System.out.println(s);
}
public static String charCount(String str)
{
char[] cs = str.toCharArray();//把自字符串转换成数组;
TreeMap<Character,Integer> ts = new TreeMap<Character,Integer>();//定义一个集合因为具备顺序又是成对出现的所以就用TreeMap集合。
for(int x=0;x<=cs.length;x++)//遍历数组;
{ Integer value = ts.get(cs[x]);//定义一个int包装类型的键。
if(value ==null){ts.put(cs[x],1);}//如果键放入集合时候没有的就返还null,则将键和第一次出现的一次的值存入集合;
else{value+=1;ts.put(cs[x],value);}//如果里面有该键那将值增加一次 ,在次将键和值一起放入集合中。
}
//System.out.println(ts);//打印一次看看结果。
StringBuffer sb= new StringBuffer();//定义一个容器,为了将其编有顺序的字符串。
Set<Map.Entry<Character,Integer>> entrySet = ts.entrySet(); //讲集合中的键值对反射到set集合中。
Iterator<Map.Entry<Character,Integer>> it= entrySet.iterator();//定义一个迭代器取出 集合中的元素。
while(it.hasNext())//进行迭代。
{
Map.Entry<Character,Integer> i = it.next();//讲取出的来的元素转换成 Map.Entry类型的分别得到其中的键和值。
Character ch = i.getKey();
Integer in = i.getValue();
sb.append(ch+"("+in+")");//将键和值都添加到容器里面
}
return sb.toString();//返回容器里面的内容字符串形式。
}
}
复制代码
说是17行错了不知道哪错了大神看看
作者:
Kelvinhu
时间:
2014-4-26 17:34
java.lang.ArrayIndexOutOfBoundsException
作者:
创造命运
时间:
2014-4-26 20:12
你看看我这里用红色写的代码跟你的有什么区别。编译的时候报的异常是数组越界,我不相信这个你不会处理吧!
import java.io.*;
import java.util.*;
import java.text.SimpleDateFormat;
import java.util.*;
public class Test1 {
public static void main(String[] ages)
{
String s = charCount("aaaaabbdsdfadsfasg");
System.out.println(s);
}
public static String charCount(String str)
{
char[] cs = str.toCharArray();//把自字符串转换成字符数组;
TreeMap<Character,Integer> ts = new TreeMap<Character,Integer>();//定义一个集合因为具备顺序又是成对出现的所以就用TreeMap集合。
for(int x = 0; x < cs.length; x++)//遍历数组;
{
Integer value = ts.get(cs[x]);//定义一个int包装类型的键。
if(value == null){
ts.put(cs[x],1);
}//如果键放入集合时候没有的就返还null,则将键和第一次出现的一次的值存入集合;
else{
value += 1;
ts.put(cs[x],value);
}//如果里面有该键那将值增加一次 ,在次将键和值一起放入集合中。
}
//System.out.println(ts);//打印一次看看结果。
StringBuffer sb = new StringBuffer();//定义一个容器,为了将其编有顺序的字符串。
Set<Map.Entry<Character,Integer>> entrySet = ts.entrySet(); //讲集合中的键值对反射到set集合中。
Iterator<Map.Entry<Character,Integer>> it = entrySet.iterator();//定义一个迭代器取出 集合中的元素。
while(it.hasNext())//进行迭代。
{
Map.Entry<Character,Integer> i = it.next();//讲取出的来的元素转换成 Map.Entry类型的分别得到其中的键和值。
Character ch = i.getKey();
Integer in = i.getValue();
sb.append(ch+"("+in+")");//将键和值都添加到容器里面
}
return sb.toString();//返回容器里面的内容字符串形式。
}
}
作者:
136616244
时间:
2014-4-26 20:54
你把编译器报 的英文发出来
我帮你翻译下:lol
作者:
ò壞尛孩
时间:
2014-4-26 21:34
看看我写的程序
/*
"sdfgzxcvasdfxcvdf"获取该字符中的字母出现的次数
希望打印结果:a(1)c(2)..
第一次用a字母作为键去找集合,那么集合中没有a这个键,所以也没有对应的次数。
返回null
如果是null 则将a字母和1存入集合
如果制定的键已经存在,说明有对应次数,就将对应的次数取出,并自增后在从新
存入集合
思路:
1、将字符串转换成字符数组,因为要对每一个字母进行操作
2、定义一个map集合,因为打印结果的字母有顺序。
3、遍历这个字符数组,
将每一个字符作为键去查map集合
如果返回null,就将该字符和1存入到map集合中。
如果返回不是null,说明该字母子啊map集合已经存在就获取对应次数并进行自增,
然后将该字母和自增后的次数存入到map集合中,,覆盖调用原来所对应的键,
4、将map集合中的数据变成制定的字符串形式返回
*/
import java.util.*;
class MapDemo2
{
public static void main(String[] args)
{
System.out.println(charCount("sdfgzxcvasdfxcvdf"));
//System.out.println("Hello World!");
}
public static String charCount(String str)
{
char[] chs=str.toCharArray();
TreeMap<Character,Integer>tm =new TreeMap<Character,Integer>();//泛型中接收的都是引用数据类型 ,存入基本类型的包装类
int count=0;
for(int x=0;x<chs.length;x++)
{
if(chs[x]<='a'&&chs[x]>='z'||chs[x]<='A'&&chs[x]>='Z')
continue;
Integer value=tm.get(chs[x]);
if(value!=null)
count=value;
count++;
tm.put(chs[x],count);
count=0;
//if(value==null)
//{
//tm.put(chs[x],1);
//}
//else
//{
//value=value+1;
//tm.put(chs[x],value);
//}
}
System.out.println(tm);
StringBuilder sb=new StringBuilder();
Set<Map.Entry<Character,Integer>> entrySet=tm.entrySet();
Iterator<Map.Entry<Character,Integer>> it=entrySet.iterator();
while(it.hasNext())
{
Map.Entry<Character,Integer> me=it.next();
Character ch=me.getKey();
Integer value=me.getValue();
sb.append(ch+"("+value+")");
}
return sb.toString();
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2