论坛首页 Java企业应用论坛

一道8K的面试题

浏览 24617 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (18)
作者 正文
   发表时间:2011-09-08  
钱太好挣了吧,求公司名字
0 请登录后投票
   发表时间:2011-09-08  
wkcgy 写道
我大胆的揣测一下:安装==按照;书序==顺序!!最后想要达到的目的是得到map,map的key是:时间,value是:诸如此类的字符串“##20110811$$$hello3434334343443hhh20110811”。直接分析字符串不就得了。先从set中得到key,然后根据key去arraylist中找相关内容!!


貌似不是这个意思,而是map的key是:排序后的set的各个日期,value是:按照set里各个日期分组后的dayList。
0 请登录后投票
   发表时间: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;
		}






}

0 请登录后投票
   发表时间:2011-09-08  
看不懂题目 表示压力很大!
0 请登录后投票
   发表时间:2011-09-08  
不好意思,我也没看懂~~~~~
0 请登录后投票
   发表时间:2011-09-08  
楼主思路还蛮清晰的。主要是用到 org.apache.commons.lang.StringUtils这个类。即commons-lang.jar。它里面提供了许多static方法操作字符串!
0 请登录后投票
   发表时间:2011-09-08  
楼主不在国内吧。。。
0 请登录后投票
   发表时间:2011-09-08  
8K的面试题,没太明白。
0 请登录后投票
   发表时间:2011-09-08  
这就八千,在北京的吧,别的在内地,开发人员都没这么高吧。
0 请登录后投票
   发表时间:2011-09-08  
错字连篇。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics