论坛首页 Java企业应用论坛

一道8K的面试题

浏览 24620 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (18)
作者 正文
   发表时间:2011-09-09  
太简单的题了
0 请登录后投票
   发表时间:2011-09-10  
H_eaven 写道
牛人分两种:
   一种是把复杂的问题简单化,
   另一种是把简单的问题复杂化。

两者皆牛人
在内部开发中,复杂问题简单化,以降低开发成本,这种是技术牛人。
在对外交流中,简单问题复杂化,以取得某种利益,这种是外交牛人。
0 请登录后投票
   发表时间:2011-09-10  
晕。看的头疼!
0 请登录后投票
   发表时间:2011-09-12  
这个,我也没看懂……
0 请登录后投票
   发表时间:2011-09-12  
woaiwofengkuang 写道
bao231 写道
helloxyz123 写道
这个面试题目大概意思我用大白话描述一下:

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");

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");

最后要封装的结果为:
/**
* 把每天的数据封装到map中,用对应的天做KEY,按set的值分组和排序,比如
* List<String> dayList = new ArrayList<String>();
* dayList.add("hello3434334343443hhh20110810")
* dayList.add("world3434334343443hhh20110810")
* map.put("20110810",dayList);
*等等其他天加入进去
* map.put("20110811",dayxList);
*/

要求:排序要安装set中数据来排序,最后map中得KEY的书序也要保证安装set来,哈哈,大家看看怎么样,看着很简单,其实还是不那么简单的哦?



我提点建议哦,你这个程序写的真的不敢苟同啊,
建议从以下几个方面着手哦,
1.能不用嵌套循环的就不要嵌套循环。
2.能减少循环次数的就减少次数。
你这个程序明显只需要一个循环就可以把这些搞定的,你为什么高了这么多循环,哎。

同意,第二个set多次一举。

一个循环一个map就够了,多整个set浪费了.
0 请登录后投票
   发表时间:2011-09-15  
import java.util.*;

public class TestCreateMap {
	public static void main(String[] args) {
		List<String> myList = myList();
		Set<String> mySet = mySet();
		List<String> d1 = new ArrayList<String>();
		Map<String, List<String>> myMap = new LinkedHashMap<String, List<String>>();
		
		Iterator i = mySet.iterator();		
		while (i.hasNext()) {			
			String key = (String)i.next();			
			
			for (String value : myList) {
				String[] str = value.split("\\$\\$\\$");
				if (str[0].contains(key)) {					
					d1.add(str[1]);
				}					
			}			
			System.out.println(d1);			
			myMap.put(key, d1);
			d1.clear();	
		}
		System.out.println(myMap);
	}		
	
	public static List myList() {
		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 mySet() {
		Set<String> set = new LinkedHashSet<String>();
		set.add("20110810");
		set.add("20110811");
		set.add("20110812");
		set.add("20110813");
		set.add("20110814");
		set.add("20110815");
		
		return set;
	}
}

 修改几楼的朋友的其中一段代码,有个疑问打印 d1 是有值的,为什么打印 myMap 值为空,键正常

 

  • 大小: 43.2 KB
0 请登录后投票
   发表时间:2011-09-15  
新人刚学,不理解是哪里问题  呵呵
如不加d1.clear();方法,myMap的值从hello.....20110812 -  world.....20110815全部数据
0 请登录后投票
论坛首页 Java企业应用版

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