求一java算法

问题描述

有一个Map,里面存放着{ {a,a_value}, {b,b_value}, {c,c_value}, {d,d_value}, {e,e_value}, {d2,d2_value}, {e2,e2_value}, {d3,d3_value}, {e3,e3_value}}--------------现在有个要求,把上面的数据按以下的方式输出:a:a_valueb:b_valuec:c_valued:d_valuee:e_valued:d2_valuee:e2_valued:d3_valuee:e3_value-------------PS:不能使用IdentityHashMap和Map.Entry 问题补充:恩,谢谢你的解答,如果这道题换成用数组来实现的话可以吗?AngelAndAngel 写道

解决方案

Map<String, String> map=new TreeMap<String, String>(new Comparator(){public int compare(Object o1, Object o2) {String str1=(String)o1;String str2=(String)o2;if(str1.length()==1&&str2.length()==1){return str1.compareTo(str2);}if(str1.length()==2&&str2.length()==2){char char1=str1.charAt(1);char char2=str2.charAt(1);if(char1!=char2){return char1>char2?1:-1;}else{return str1.charAt(1)>str2.charAt(1)?1:-1;}}return str1.length()>str2.length()?1:-1;}});试试
解决方案二:
引用题意要的不是排序,是需要你把一个MAP中近似的KEY在VALUE不变的情况下转化成相似的KEY进行顺序输出你不排序,又怎么顺序输出?!我的代码已经可以把map转成Record类型数值,直接排序,应该算快的了。
解决方案三:
引用MAP是在接口上已经定死了,我目前是想把发过来的map里面的数据取出来放进到数组里面处理。那你必然得有循环map到数组的过程 这个也算是性能影响的一部分了。
解决方案四:
引用目前我是使用以下的做法来实现重复Key的Map,但是觉得性能不忧,想找些比较高效的算法实现。假如你想高效,就别老用map,用多维数组可以解决,但是这个和你初衷想法应该不太一样。其实java的数据结构已经被封装成这样了,性能上其实提高空间不是太大了。
解决方案五:
import java.util.Arrays;public class Record implements Comparable<Record> {private final String id;private final String value;public Record(String id, String value) {super();this.id = id;this.value = value;}public int compareTo(Record o) {String id1 = id;String id2 = o.id;int n1 = id1.length();int n2 = id2.length();if (n1 > n2)return 1;else if (n1 < n2)return -1;for (int i = n1 - 1; i >= 0; i--) {char ch1 = id1.charAt(i);char ch2 = id2.charAt(i);if (ch1 > ch2)return 1;else if (ch1 < ch2)return -1;}return 0;}public String toString() {return id + "," + value;}public static void main(String[] args) {Record[] records = { new Record("a", "a_value"), new Record("b", "b_value"),new Record("c", "c_value"), new Record("d", "d_value"), new Record("e", "e_value"),new Record("d2", "d2_value"), new Record("e2", "e2_value"),new Record("d3", "d3_value"), new Record("e3", "e3_value") };Arrays.sort(records);for (Record r : records) {System.out.println(r);}}其实这么简单的问题,都够不上称之为“算法”
解决方案六:
package com.text;import java.util.Arrays;import java.util.HashMap;import java.util.Iterator;import java.util.Set;public class testMap {public static void main(String[] args) {HashMap hm = new HashMap();hm.put("a", "a_value");hm.put("b", "b_value");hm.put("c", "c_value");hm.put("d", "d_value");hm.put("e", "e_value");hm.put("f", "f_value");Set<String> s = hm.keySet();//for (Iterator iterator = s.iterator(); iterator.hasNext();) {//String str = (String) iterator.next();//System.out.println(str + ":" + hm.get(str));//}System.out.println(s.size());String[] a = s.toArray(new String[s.size()]);for (int i = 0; i < a.length; i++) {System.out.println(a[i]);System.out.println(a[i] + ":" + hm.get(a[i]));} } }我帮你写了2中方法 set集合都是无序的你需要排序下排序很简单我就不用写了
解决方案七:
可以呀,加我QQ503229799
解决方案八:
引用恩,谢谢你的解答,如果这道题换成用数组来实现的话可以吗?可以多维数组实现。
解决方案九:
循环排序一下
解决方案十:
用LinkedHashMap,这样map就有序了然后for(Iterator it = map.iterator; it.hasNext; )不知道符不符合你的需求
解决方案十一:
用TreeMap排序

时间: 2024-08-04 06:18:18

求一java算法的相关文章

求一个抽奖算法,最好java实现

问题描述 求一个抽奖算法,最好java实现 需求如下: 总共分四等奖, 1等奖名额2个,中奖概率2/10000 2等奖名额10个,中奖概率5/1000 3等奖名额100个,中奖概率10/100 4等奖名额880个,中奖概率25/100 求一个算法,算出用户单次抽奖中奖等级(1,2,3,3等奖或不中奖). 最好java实现. 解决方案 说个最简单的,用java的随机函数.用Random类生成随机数,也可以用Math类中的random生成 区别看这里:http://liukai.iteye.com/

跪求大神指点java算法

问题描述 跪求大神指点java算法 如何实现1+21+31+42+32+43+41+2+3.........的不规则加法,加的位数不确定 解决方案 这既是找规律,这就是1234...n的排列组合,你找个组合的算法,计算出各种组合,然后每个组合中的数相加

求一个Java实现的卡尔曼滤波算法

问题描述 现在做一个基于无线信号的定位系统,求一个Java实现的卡尔曼滤波算法 解决方案 解决方案二:http://download.csdn.net/download/u012766656/8313709这里可以下载

JAVA算法实现图片透明化渐变

问题描述 JAVA算法实现图片透明化渐变 关于实现图像黑白的颜色渐变可以实现.用每行的红绿蓝都逐渐减少就能实现. 但是上面要求提供一个算法把传进来的图片覆盖一层从透明黑色的阴影逐渐变成透明的效果. 求指导~~ 要是能把源码发来就跟好了~~ 解决方案 源代码肯定是没有的,需要你自己实现. 图片,是什么格式的呢?BMP,还是 PNG? 要处理图片,你首先要能读到图片未处理前的每像素的数值吧,如果能读到,做黑白渐变只是简单的修改读到的 RGB 的数值. 透明黑色的阴影,如果是 PNG 格式,则可以通过

java算法题,公司的笔试题

问题描述 java算法题,公司的笔试题 suppose you have N cakes, N is an interger>0 // at each time, you can either eat 1 cake, or 2 cakes or 3 cakes // PROBLEM: How many ways can you eat all N cakes // for example, N = 4, (1,2,1) and (1,1,2) are considered to be diffe

百度知道-【java算法题】凑凑凑凑凑凑字数

问题描述 [java算法题]凑凑凑凑凑凑字数 题目:标题:猜字母???把abcd...s共19个字母组成的序列重复拼接106次,得到长度为2014的串.???接下来删除第1个字母(即开头的字母a),以及第3个,第5个等所有奇数位置的字母.??得到的新串再进行删除奇数位置字母的动作.如此下去,最后只剩下一个字母,请写出该字母./-----------------------------------从百度知道查看但是不懂 1024 和他的思维求大神解惑 /----------------------

求一个java的人脸识别系统源码

问题描述 求一个java的人脸识别系统源码 用java语言开发,可以进行人脸识别的程序,算法不要太复杂,能进行简单的人脸识别就行了 解决方案 求人脸识别系统源代码!!! 解决方案二: 一个完整的项目demo http://download.csdn.net/detail/apbbbbb/9525308

利用java算法排列组合父节点下的子节点

问题描述 利用java算法排列组合父节点下的子节点 一个item下有多个父节点,一个父节点下面有多个子节点,通过遍历父节点把每个父节点的子节点遍历出来,然后对子节点进行组合,求大神帮我补全代码 List parents = mrItemDimCombMybatisDao.getAllParentByItem(itemId); for (MrItemDim parent : parents) { List sons = mrItemDimCombMybatisDao.getAllSonByPare

求一个合理算法,比较两个数据量较大的集合

问题描述 求一个合理算法,比较两个数据量较大的集合 现有listA,数据库B,A中的数据如果与B中不同(包含不存在的情况), 则将不同或不存在的数据记录到B中, 现在问题是,listA和数据库B都有大量数据, 求一个合理的比较二者数据的算法 解决方案 先排序再比较啊. 比较的时候: 如果 A[i] == B[j],继续下一个比较 A[i+1] 和 B[j+1]: 如果 A[i]<B[j].或者B没有可以比较的数,就是不存在: 如果 A[i]>B[j],继续下一个比较 A[i] 和 B[j+1]