黑马程序员技术交流社区

标题: java集合问题-编程题求解 [打印本页]

作者: cyifovou    时间: 2016-12-26 14:26
标题: java集合问题-编程题求解
集合最后一天的作业,应该怎么解,我的思路是建立hashmap对象,键存字符,值存一个对象,对象里有计数的方法,跟键所对应的字符相联系,然后通过反复查表,只要出现某个字符就查一次表,调用方法计数。打印出来,打印也通过查表的方式,建立一个hashset存已出现的字符,自动去重之后再添加其中的元素到一个list集合,然后排序,用list集合作为键,便利取hash map里的值,打印出来


作者: IceLoveInFire丶    时间: 2016-12-26 15:56
你是说第二题呢?

作者: 小陵不懂    时间: 2016-12-26 16:19
代码贴出来了,这里用到的不只是集合,还有String类中的一些方法,主要在于字符串的解析,加上一些逻辑判断即可

统计字符串中的字符数.jpg (54.03 KB, 下载次数: 5)

统计字符串中的字符数.jpg

作者: 小陵不懂    时间: 2016-12-26 16:23
本帖最后由 小陵不懂 于 2016-12-26 16:25 编辑

[Java] 纯文本查看 复制代码
import java.util.HashMap;
import java.util.Scanner;
public class Demo06 {
        public static void main(String[] args) {
                //1.声明Scanner对象
                Scanner sc=new Scanner(System.in);
                //2.声明Map集合存放字符及其数量的键值对
                HashMap<Character,Integer> map=new HashMap<Character, Integer>();
                //3.获取字符串
                System.out.println("请输入字符串:");
                String str=sc.next();
                //4.将字符串转为字符数组
                char[] chs=str.toCharArray();
                //5.遍历字符数组放入到集合中
                for (char c : chs) {
                        //判断集合中是否有c键的键值对
                        if(map.containsKey(c)){
                                //有,在值上+1
                                map.put(c, map.get(c)+1);
                        }else{
                                //没有
                                map.put(c, 1);
                        }
                }
                //6.遍历map集合打印字符及其数量
                for (Character c : map.keySet()) {
                        System.out.print(c+"("+map.get(c)+"),");
                }
        }
}



作者: cyifovou    时间: 2016-12-26 16:26
小陵不懂 发表于 2016-12-26 16:23
[mw_shl_code=java,true]import java.util.HashMap;
import java.util.Scanner;
public class Demo06 {

非常感谢!我自己也写了一个,但是繁琐的很。。。我忘了map集合put相同的键,值可以覆盖这回事了。。。然后纠结了好久,写出来了但是十分的麻烦。看了你的代码一下子就清晰了~还是学的不精。。。这两天刚学的就把值可以被覆盖这茬给忘了。

作者: 小陵不懂    时间: 2016-12-26 16:28
cyifovou 发表于 2016-12-26 16:26
非常感谢!我自己也写了一个,但是繁琐的很。。。我忘了map集合put相同的键,值可以覆盖这回事了。。。然 ...

把值定义为Integer类型,键重复就+1,这种逻辑有一次就记住了,不客气,学习在于分享
作者: cyifovou    时间: 2016-12-26 16:30
小陵不懂 发表于 2016-12-26 16:28
把值定义为Integer类型,键重复就+1,这种逻辑有一次就记住了,不客气,学习在于分享 ...

哈哈,我还傻傻地去定义了一个类,专门用来计数

作者: 月微怜    时间: 2016-12-28 16:52
map集合原来这样用。。学到好东西了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2