黑马程序员技术交流社区
标题:
我自己做的io训练+怎么给Map集合排序
[打印本页]
作者:
masai158
时间:
2014-7-24 10:36
标题:
我自己做的io训练+怎么给Map集合排序
本帖最后由 masai158 于 2014-7-28 16:00 编辑
做练习题的时候,就看题目是什么,千万别看他的实现方法和思想。这样就锻炼不到什么。。
现在我已经对下面的题有所领悟。 上传2个附件,我就开始做下面的题了。。
一个是百度 io 训练题,一个则是 我自己做的题。如果需要的拿去看一吧
多多学习io 。没错的。
已完成-IO练习题.zip
(2.19 KB, 下载次数: 147)
2014-7-25 09:46 上传
点击文件名下载附件
百度的题
自己做的.zip
(7.61 KB, 下载次数: 143)
2014-7-25 09:46 上传
点击文件名下载附件
自己做的
TreeMap<String,Integer>
百度找的题。其他的题都做完了。就差这个了。。.
从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,
并按重复次数排序,如果次数相同按姓名字母排序:
1,zhangsan,28
2,lisi,35
3,zhangsan,28
4,wangwu,35
5,zhangsan,28
6,lisi,35
7,zhaoliu,28
8,tianqi,35
目前已经解决。大家有更简单的方法吗??
http://bbs.itheima.com/thread-133437-1-1.html
作者:
masai158
时间:
2014-7-24 10:54
{:2_30:} 我自己顶一下。
作者:
star5603
时间:
2014-7-24 10:56
给TreeMap构造函数传入比较器
TreeMap tm = new TreeMap(new ComparatorByName());ComparatorByName这个是自定义比较器。
或者你定义的Person类实现Comparable接口。
作者:
杨冬冬
时间:
2014-7-24 11:24
把你写好的程序拿出来,让我们看看,给你点参考意见
作者:
masai158
时间:
2014-7-24 21:59
杨冬冬 发表于 2014-7-24 11:24
把你写好的程序拿出来,让我们看看,给你点参考意见
明天早上把我的做的全部发上面。都是IO的。不过我就是看了题目。他的答案我都没看。而且到现在做完了也没有看过
作者:
masai158
时间:
2014-7-25 09:47
{:2_30:}{:2_30:}{:2_30:}{:2_30:}{:2_30:}
io 训练题一在上面了。切记不要看实现方法的
作者:
masai158
时间:
2014-7-28 15:59
http://bbs.itheima.com/thread-133437-1-1.html
已经解决了。
作者:
icris
时间:
2014-7-28 18:14
本帖最后由 icris 于 2014-7-28 18:26 编辑
import java.util.*;
public class Comp {
public static void main(String[] args) {
String[] souce = getSouce();
String[] names = getNames(souce);
final HashMap<String, Integer> times = countTimes(names);
TreeMap<String, Integer> map = getMap(times);
System.out.println(map);
}
private static TreeMap<String, Integer> getMap(
final HashMap<String, Integer> times) {
TreeMap<String, Integer> map = new TreeMap<String, Integer>(
new Comparator<String>() {
public int compare(String o1, String o2) {
Integer i1 = times.get(o1);
Integer i2 = times.get(o2);
if (i1 != i2) {
return i2 - i1;
}
return o1.compareTo(o2);
}
});
map.putAll(times);
return map;
}
private static HashMap<String, Integer> countTimes(String[] names) {
final HashMap<String, Integer> times = new HashMap<String, Integer>();
for (String name : names) {
times.put(name, times.containsKey(name) ? times.get(name) + 1 : 1);
}
return times;
}
private static String[] getNames(String[] souce) {
String[] names = new String[8];
for (int i = 0; i < names.length; i++) {
names[i] = souce[i].replaceAll("[\\d,]", "");
}
return names;
}
private static String[] getSouce() {
String[] souce = { "1,zhangsan,28", "2,lisi,35", "3,zhangsan,28",
"4,wangwu,35", "5,zhangsan,28", "6,lisi,35", "7,zhaoliu,28",
"8,tianqi,35" };
return souce;
}
}
复制代码
去掉了与题目关系不大的IO部分(雾),把排序写了一下
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2