黑马程序员技术交流社区

标题: [已解决]HashMap取出元素时,能否控制顺序 [打印本页]

作者: 李知伦    时间: 2012-8-20 18:09
标题: [已解决]HashMap取出元素时,能否控制顺序
本帖最后由 李知伦 于 2012-8-22 17:41 编辑

HashMap取出元素时,能否控制顺序
比如取字母出现次数,能否按照,原始字符串的排列顺序,升序,降序等




作者: 唐杨老师    时间: 2012-8-20 18:22
要重写的HashCode和equals方法的吧
作者: 杜鹏云    时间: 2012-8-20 18:24
写一个比较器实现Compareable接口或者Comparetor接口,然后将此比较器作为参数传入集合的构造函数中。
作者: 李知伦    时间: 2012-8-22 15:30
顶下贴,有能代码实现的吗?
作者: 灵感    时间: 2012-8-22 17:08
本帖最后由 严学韦 于 2012-8-22 17:14 编辑

/*
需求:将字符串按照出现的次数进行排序
*/

import java.util.*;
class  MapDemo
{
        public static void main(String[] args)
        {
                String s= charCount("sdfasdewefqmcoad");
                System.out.println(s);
        }

        public static String charCount(String str)
        {
                char[] chs = str.toCharArray();//将字符串转换成字符数组。因为要对每一个字母进行操作。

                //定义一个map集合,因为打印结果的字母有顺序,所以使用treemap集合。
                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;
                }

                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();//将map集合中的数据变成指定的字符串形式返回
        }
}



运行结果.jpg (5.49 KB, 下载次数: 81)

运行结果.jpg





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