来看看这两道面试题 1 用HashMap实现一个链表的数据结构,要有增加,删除,遍历功能。2 自定义一个JSP的分页标签,可以跳转到第一页,前页,后页,最后一页。大家有什么好的想法,如果有相关代码,请让我参考一下。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 要是连你都知道,我就不再CSDN上混了。 以下观点供参考:1.数据都用hashMap存储用integer做为key类中维护一个minInteger和maxInteger这两个对应的value即为head 和tail增加的话maxInteger++把值放到hashMap中删除的话要遍历hashMapremove掉相应的key value遍历直接遍历hashMap就行了这种方法做起来可能maxInteger会越来越大期待好的解决方案2.搜索引擎,一堆又一堆的这里挂个jsprun论坛的分页代码直接包装成标签就OK了 public static Map<String,Object> multi(int num,int perpage,int curpage,String mpurl,int maxpages,int page,boolean autogoto,boolean simple,String ajaxtarget,boolean isstaticurl) { Map<String,Object> multi=new HashMap<String,Object>(); int realpages=1; if(num>perpage){ ajaxtarget=ajaxtarget!=null?" ajaxtarget=\""+Common.htmlspecialchars(ajaxtarget)+"\" ":""; if(!isstaticurl){ mpurl+=mpurl.indexOf("?")>=0?"&":"?"; } int offset=2; realpages=(int)Math.ceil((float)num/(float)perpage); int pages = maxpages>0 && maxpages < realpages ? maxpages : realpages; int from=0; int to=0; if(page>pages){ from=1; to=pages; }else{ from=curpage-offset; to=from+page-1; if(from<1){ to=curpage+1-from; from=1; if(to-from<page){ to=page; } }else if(to>pages){ from=pages-page+1; to=pages; } } StringBuffer multipage=new StringBuffer(); multipage.append((curpage - offset > 1 && pages > page ? "<a href=\""+(isstaticurl?mpurl+"-1.html":mpurl+"page=1")+"\" class=\"first\""+ajaxtarget+">1 ...</a>" : "")); multipage.append((curpage > 1 && !simple ? "<a href=\""+(isstaticurl?mpurl+"-"+(curpage - 1)+".html":mpurl+"page="+(curpage - 1))+"\" class=\"prev\""+ajaxtarget+">‹‹</a>" : "")); for (int i = from; i <= to; i++) { multipage.append(i == curpage ? "<strong>"+i+"</strong>":"<a href=\""+(isstaticurl?mpurl+"-"+i+".html":mpurl+"page="+i)+(ajaxtarget.length()>0 && i == pages && autogoto ? "#" : "")+"\""+ajaxtarget+">"+i+"</a>"); } multipage.append((curpage < pages && !simple ? "<a href=\""+(isstaticurl?mpurl+"-"+(curpage + 1)+".html":mpurl+"page="+(curpage + 1))+"\" class=\"next\""+ajaxtarget+">››</a>" : "")); multipage.append(to < pages ? "<a href=\""+(isstaticurl?mpurl+"-"+pages+".html":mpurl+"page="+pages)+"\" class=\"last\""+ajaxtarget+">... "+realpages+"</a>" : ""); multipage.append(!simple && pages > page && ajaxtarget.length()==0 ? "<kbd><input type=\"text\" name=\"custompage\" size=\"3\" onkeydown=\"if(event.keyCode==13) {window.location=\'"+(isstaticurl?mpurl+"-'+this.value+'.html'":mpurl+"page=\'+this.value")+"; return false;}\" /></kbd>" : ""); multi.put("multipage", "<div class=\"pages\">"+(!simple ? "<em> "+num+" </em>" : "")+multipage+"</div>"); } multi.put("maxpage",realpages); return multi; } 第一题就是让你写一个自己的容器,可参照LinkedList第二题如果写过分页,写过自定义tag,也不难 自定义标签的话 如果是上机我可以搜索下然后知道 因为我不会自定义标签(不熟悉)用HashMap实现一个链表的数据结构,要有增加,删除,遍历功能。这个他是让你用HASHMAP来实现 具体要利用HASHMAP的什么功能呢? 难道说KEY - VALUE - KEY - VALUE? 一个KEY跟VALUE关联 然后VALUE再作为另外一个的KEY? 我能联想到的就这么多了 真不知道为什么要用HASHMAP来实现... 求一设计思想 hibernate session的问题 jms与socket接口 批评JAVA虚拟机 寻找xfire高人! 寻求前辈指导 jfreechart求助,up有分 我使用websphere的application server 5.0 版本 ,它自带的jdk怎么是1。3版本的??? 有谁知道如何使was5.0环境下使用jdk1.4的啊? 请高手看看我现在到底是什么水平。 讨厌的错误!在JB9运行Struts1.1里jsp,页面提交后总报Error 500--Internal Server Error!! struts2表单 列表提交 el表达式中如何获得list的大小?
要是连你都知道,我就不再CSDN上混了。
1.数据都用hashMap存储
用integer做为key
类中维护一个minInteger
和maxInteger这两个对应的value即为head 和tail
增加的话maxInteger++
把值放到hashMap中
删除的话要遍历hashMap
remove掉相应的key value
遍历直接遍历hashMap就行了
这种方法做起来可能maxInteger会越来越大
期待好的解决方案
2.搜索引擎,一堆又一堆的
这里挂个jsprun论坛的分页代码
直接包装成标签就OK了
public static Map<String,Object> multi(int num,int perpage,int curpage,String mpurl,int maxpages,int page,boolean autogoto,boolean simple,String ajaxtarget,boolean isstaticurl) {
Map<String,Object> multi=new HashMap<String,Object>();
int realpages=1;
if(num>perpage){
ajaxtarget=ajaxtarget!=null?" ajaxtarget=\""+Common.htmlspecialchars(ajaxtarget)+"\" ":"";
if(!isstaticurl){
mpurl+=mpurl.indexOf("?")>=0?"&":"?";
}
int offset=2;
realpages=(int)Math.ceil((float)num/(float)perpage);
int pages = maxpages>0 && maxpages < realpages ? maxpages : realpages;
int from=0;
int to=0;
if(page>pages){
from=1;
to=pages;
}else{
from=curpage-offset;
to=from+page-1;
if(from<1){
to=curpage+1-from;
from=1;
if(to-from<page){
to=page;
}
}else if(to>pages){
from=pages-page+1;
to=pages;
}
}
StringBuffer multipage=new StringBuffer();
multipage.append((curpage - offset > 1 && pages > page ? "<a href=\""+(isstaticurl?mpurl+"-1.html":mpurl+"page=1")+"\" class=\"first\""+ajaxtarget+">1 ...</a>" : ""));
multipage.append((curpage > 1 && !simple ? "<a href=\""+(isstaticurl?mpurl+"-"+(curpage - 1)+".html":mpurl+"page="+(curpage - 1))+"\" class=\"prev\""+ajaxtarget+">‹‹</a>" : ""));
for (int i = from; i <= to; i++) {
multipage.append(i == curpage ? "<strong>"+i+"</strong>":"<a href=\""+(isstaticurl?mpurl+"-"+i+".html":mpurl+"page="+i)+(ajaxtarget.length()>0 && i == pages && autogoto ? "#" : "")+"\""+ajaxtarget+">"+i+"</a>");
}
multipage.append((curpage < pages && !simple ? "<a href=\""+(isstaticurl?mpurl+"-"+(curpage + 1)+".html":mpurl+"page="+(curpage + 1))+"\" class=\"next\""+ajaxtarget+">››</a>" : ""));
multipage.append(to < pages ? "<a href=\""+(isstaticurl?mpurl+"-"+pages+".html":mpurl+"page="+pages)+"\" class=\"last\""+ajaxtarget+">... "+realpages+"</a>" : "");
multipage.append(!simple && pages > page && ajaxtarget.length()==0 ? "<kbd><input type=\"text\" name=\"custompage\" size=\"3\" onkeydown=\"if(event.keyCode==13) {window.location=\'"+(isstaticurl?mpurl+"-'+this.value+'.html'":mpurl+"page=\'+this.value")+"; return false;}\" /></kbd>" : "");
multi.put("multipage", "<div class=\"pages\">"+(!simple ? "<em> "+num+" </em>" : "")+multipage+"</div>");
}
multi.put("maxpage",realpages);
return multi;
}
第二题如果写过分页,写过自定义tag,也不难
用HashMap实现一个链表的数据结构,要有增加,删除,遍历功能。
这个他是让你用HASHMAP来实现 具体要利用HASHMAP的什么功能呢? 难道说KEY - VALUE - KEY - VALUE?
一个KEY跟VALUE关联 然后VALUE再作为另外一个的KEY? 我能联想到的就这么多了 真不知道为什么要用HASHMAP来实现...