A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© cyifovou 中级黑马   /  2016-12-26 14:26  /  1947 人查看  /  7 人回复  /   2 人收藏 转载请遵从CC协议 禁止商业使用本文

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

来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端

7 个回复

倒序浏览
回复 使用道具 举报
代码贴出来了,这里用到的不只是集合,还有String类中的一些方法,主要在于字符串的解析,加上一些逻辑判断即可

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

统计字符串中的字符数.jpg
回复 使用道具 举报
本帖最后由 小陵不懂 于 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)+"),");
		}
	}
}


回复 使用道具 举报
小陵不懂 发表于 2016-12-26 16:23
[mw_shl_code=java,true]import java.util.HashMap;
import java.util.Scanner;
public class Demo06 {

非常感谢!我自己也写了一个,但是繁琐的很。。。我忘了map集合put相同的键,值可以覆盖这回事了。。。然后纠结了好久,写出来了但是十分的麻烦。看了你的代码一下子就清晰了~还是学的不精。。。这两天刚学的就把值可以被覆盖这茬给忘了。
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
cyifovou 发表于 2016-12-26 16:26
非常感谢!我自己也写了一个,但是繁琐的很。。。我忘了map集合put相同的键,值可以覆盖这回事了。。。然 ...

把值定义为Integer类型,键重复就+1,这种逻辑有一次就记住了,不客气,学习在于分享
回复 使用道具 举报
小陵不懂 发表于 2016-12-26 16:28
把值定义为Integer类型,键重复就+1,这种逻辑有一次就记住了,不客气,学习在于分享 ...

哈哈,我还傻傻地去定义了一个类,专门用来计数
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
map集合原来这样用。。学到好东西了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马