public List<TreeNode> getData(String ss){
TreeData data=new TreeData();
TreeNode<TreeData> node=new TreeNode();
List<TreeNode> datas=new ArrayList();
Properties p = new Properties();
Enumeration en = p.propertyNames();
String key=null;
for (int i = 0; i < ss.length(); i++) {
int value=1;
//valuesOf()是将值转化为字符串charAt(i)返回指定位置的字符
key = String.valueOf(ss.charAt(i));
if(p.containsKey(key)){
//parseInt() 函数可解析一个字符串,并返回一个整数
value=Integer.parseInt(p.getProperty(key));
p.setProperty(key, String.valueOf(value+1));
}
else{
p.setProperty(key, String.valueOf(value));
}
data.s=key;
data.rate=value;
node.obj=data;
datas.add(node);
//System.out.println("key: "+key+" value: "+p.getProperty(key));
}
System.out.println(p);
return datas;
}
有问题的代码。但是可以实现对字符串每个字符出现个数的统计
另一种统计方式:
public List<TreeData> getDatas(String s){
List<TreeData> datas=new ArrayList();
for(int i=0;i<s.length();i++){
//顺序遍历字符串
char c=s.charAt(i);
//获取s指定位置的字符
String cs=""+c;
//将字符转换为字符串
boolean exits=false;
//判断是否已经存在此字符串
for(int t=0;t<datas.size();t++){
//遍历datas队列,判断在datas队列中是否已经存在该字符
TreeData tem=new TreeData();
tem=datas.get(t);
//获取当前队列中的值
if(tem.s.equals(cs)){
//队列中已经存在此字符
tem.rate++;
//频率累加
exits=true;
break;
}
}
if(!exits){
//如果不存在,创建一个TreeData对象,添加到队列中去
TreeData data=new TreeData();
data.s=cs;
data.rate=1;
datas.add(data);
}
}
return datas;
}
刚才看到一个用HashMap来统计字符串中字符出现次数的代码,思路不错,也一并搞上来对比着学习一下
public class StrCalculate {
//定义一个主函数
public static void main(String args[]) {
// 创建一个映射对象
java.util.Map<Character, Integer> map = new java.util.HashMap<Character, Integer>();
//定义一个字符串
String str = "sadsafddasdscv";
//将此字符串转换为一个新的字符数组
char[] s = str.toCharArray();
// System.out.println(s1.length);
// 往映射中放数据
for (int i = 0; i < s.length; i++) {
char s1 = s[i];
//定义一个变量
int t=0;
for (int j = 0; j < s.length; j++) {
if (s[i]==s[j]) {
t++;
}
}
// 将键值对放到map中
map.put(s1, t);
}
// 遍历
// 1.得到键的Set集合
java.util.Set<Character> keys = map.keySet();
// 得到迭代器
java.util.Iterator<Character> iter = keys.iterator();
// 迭代set集合
while (iter.hasNext()) {
// 取出一个
char key = iter.next();
// 根据key得到Value
int value = map.get(key);
System.out.println("字母"+key + " = "+"出现次数" + value);
}
}
}