锁定老帖子 主题:一道8K的面试题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (18)
|
|
---|---|
作者 | 正文 |
发表时间:2011-09-08
钱太好挣了吧,求公司名字
|
|
返回顶楼 | |
发表时间:2011-09-08
wkcgy 写道 我大胆的揣测一下:安装==按照;书序==顺序!!最后想要达到的目的是得到map,map的key是:时间,value是:诸如此类的字符串“##20110811$$$hello3434334343443hhh20110811”。直接分析字符串不就得了。先从set中得到key,然后根据key去arraylist中找相关内容!!
貌似不是这个意思,而是map的key是:排序后的set的各个日期,value是:按照set里各个日期分组后的dayList。 |
|
返回顶楼 | |
发表时间:2011-09-08
最后修改:2011-09-08
fantasy2436 写道 这个我写了点代码测试了下,没什么难度,出错的地方就是split分割的时候,‘$’是特殊符号,需要转义,别的都没问题。
public static List<String> list; public static Set<String> set; /** * @param args */ public static void main(String[] args) { list = getData(); set = getDataSet(); Iterator it = set.iterator(); Map<String,List<String>> map = new LinkedHashMap(); while(it.hasNext()){ String setName = (String) it.next(); List<String> dataList = new ArrayList<String>(); for(String value : list){ String[] str = value.split("\\$\\$\\$"); if(str[0].contains(setName)){ dataList.add(str[1]); } } map.put(setName, dataList); for(String v:dataList){ System.out.println("key:"+setName+"\t value:"+v); } } } public static List<String> getData(){ List<String> list = new ArrayList<String>(); //作为测试,只存放了几条数据 list.add("###20110810$$$hello3434334343443hhh20110810"); list.add("###20110810$$$world3434334343443hhh20110810"); list.add("###20110811$$$hello3434334343443hhh20110811"); list.add("###20110811$$$world3434334343443hhh20110811"); list.add("###20110812$$$hello3434334343443hhh20110812"); list.add("###20110812$$$world3434334343443hhh20110812"); list.add("###20110813$$$hello3434334343443hhh20110813"); list.add("###20110813$$$world3434334343443hhh20110813"); list.add("###20110814$$$hello3434334343443hhh20110814"); list.add("###20110814$$$world3434334343443hhh20110814"); list.add("###20110815$$$hello3434334343443hhh20110815"); list.add("###20110815$$$world3434334343443hhh20110815"); return list; } public static Set getDataSet(){ Set<String> set = new LinkedHashSet<String>(); //代表要根据set集合分组,我也只是写了几条数据 set.add("20110810"); set.add("20110811"); set.add("20110812"); set.add("20110813"); set.add("20110814"); set.add("20110815"); return set; } 哎这个代码有这么复杂嘛?本来就是一次循环可以搞定的,为什么要搞个n次循环呢? 引用 import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Set; public class App1 { public static List<String> list; public static Set<String> set; /** * @param args */ public static void main1(String[] args) { list = getData(); set = getDataSet(); Iterator it = set.iterator(); Map<String,List<String>> map = new LinkedHashMap(); while(it.hasNext()){ String setName = (String) it.next(); List<String> dataList = new ArrayList<String>(); for(String value : list){ String[] str = value.split("\\$\\$\\$"); if(str[0].contains(setName)){ dataList.add(str[1]); } } map.put(setName, dataList); for(String v:dataList){ System.out.println("key:"+setName+"\t value:"+v); } } } public static void main(String[] args) { list = getData(); set = getDataSet(); Iterator it = set.iterator(); Map<String,List<String>> map = new LinkedHashMap<String,List<String>>(); for(String value : list){ String[] str = value.split("\\$\\$\\$"); if(!(str!=null && str.length==2)&&!set.contains(str[0])) continue; if(map.containsKey(str[0])){ map.get(str[0]).add(str[1]); }else{ List<String> tplist = new ArrayList<String>(); map.put(str[0], tplist); tplist.add(str[1]); } } System.out.println(map.toString()); } public static List<String> getData(){ List<String> list = new ArrayList<String>(); //作为测试,只存放了几条数据 list.add("###20110810$$$hello3434334343443hhh20110810"); list.add("###20110810$$$world3434334343443hhh20110810"); list.add("###20110811$$$hello3434334343443hhh20110811"); list.add("###20110811$$$world3434334343443hhh20110811"); list.add("###20110812$$$hello3434334343443hhh20110812"); list.add("###20110812$$$world3434334343443hhh20110812"); list.add("###20110813$$$hello3434334343443hhh20110813"); list.add("###20110813$$$world3434334343443hhh20110813"); list.add("###20110814$$$hello3434334343443hhh20110814"); list.add("###20110814$$$world3434334343443hhh20110814"); list.add("###20110815$$$hello3434334343443hhh20110815"); list.add("###20110815$$$world3434334343443hhh20110815"); return list; } public static Set getDataSet(){ Set<String> set = new LinkedHashSet<String>(); //代表要根据set集合分组,我也只是写了几条数据 set.add("20110810"); set.add("20110811"); set.add("20110812"); set.add("20110813"); set.add("20110814"); set.add("20110815"); return set; } } |
|
返回顶楼 | |
发表时间:2011-09-08
看不懂题目 表示压力很大!
|
|
返回顶楼 | |
发表时间:2011-09-08
不好意思,我也没看懂~~~~~
|
|
返回顶楼 | |
发表时间:2011-09-08
楼主思路还蛮清晰的。主要是用到 org.apache.commons.lang.StringUtils这个类。即commons-lang.jar。它里面提供了许多static方法操作字符串!
|
|
返回顶楼 | |
发表时间:2011-09-08
楼主不在国内吧。。。
|
|
返回顶楼 | |
发表时间:2011-09-08
8K的面试题,没太明白。
|
|
返回顶楼 | |
发表时间:2011-09-08
这就八千,在北京的吧,别的在内地,开发人员都没这么高吧。
|
|
返回顶楼 | |
发表时间:2011-09-08
错字连篇。
|
|
返回顶楼 | |