1.HashMap相关问题
1.1HashMap存key,value,key会有重复的,value会有多个值,选取此方式进行存取,动态获取key,value取list,若满足条件,list一直add,key覆盖掉之前的,list一直在增加。
HashMap<String, List<ScatteredPrescriptionDetail>> preDetailMap=new HashMap<String, List<ScatteredPrescriptionDetail>>();
for (int i=0;i<prescriptionDetailList.size();i++) {
ScatteredPrescriptionDetail scatteredPrescriptionDetail = prescriptionDetailList.get(i);
if("Y".equals(scatteredPrescriptionDetail.getIsSubOrder())){
if (!preDetailMap.containsKey(scatteredPrescriptionDetail.getParentOrderSN())) {
List<ScatteredPrescriptionDetail> tmpList=new ArrayList<ScatteredPrescriptionDetail>();
tmpList.add(scatteredPrescriptionDetail);
preDetailMap.put(scatteredPrescriptionDetail.getParentOrderSN(), tmpList);
}
else {
System.out.println();
preDetailMap.get(scatteredPrescriptionDetail.getParentOrderSN()).add(scatteredPrescriptionDetail);
}
}
else if("N".equals(scatteredPrescriptionDetail.getIsSubOrder())){
faList.add(scatteredPrescriptionDetail);
}
}
1.2关于计算日期上一周与下一周的问题
public String changeCurrentTime()throws Exception{
String before = getParameter("before");
String flag = getParameter("flag");
String[] split=before.split("-");
int year=Integer.valueOf(split[0]).intValue();
int mon=Integer.valueOf(split[1]).intValue();
int day=Integer.valueOf(split[2]).intValue();
String after="";
if("B".equals(flag)) {
int tmpday=0;
if(day<=7) {
tmpday=7-day;
mon=mon-1;
day=new Date(year, mon, 0).getDate()-tmpday;
if(mon<=0) {
year=year-1;
mon=12;
day=new Date(year, mon, 0).getDate();
}
}else {
day=day-7;
}
after=String.valueOf(year)+"-";
after=after+String.valueOf((mon<10?String.valueOf("0"+mon):String.valueOf(mon)))+"-";
after=after+String.valueOf(day<10?String.valueOf("0"+day):String.valueOf(day));
}
if("A".equals(flag)) {
int tmpday=0;
day=day+7;
if(day>new Date(year, mon, 0).getDate()) {
tmpday=new Date(year, mon, 0).getDate();
mon=mon+1;
day=day-tmpday;
if(mon>12) {
year=year+1;
mon=1;
}
}
after=String.valueOf(year)+"-";
after=after+String.valueOf((mon<10?String.valueOf("0"+mon):String.valueOf(mon)))+"-";
after=after+String.valueOf(day<10?String.valueOf("0"+day):String.valueOf(day));
}
return after;
}
1.3关于new对象与for循环的关系
A a = new A();
for(int i=0;i<list.size();i++){
a.setName(i);
a.setAge(i);
list.add(a);
}
最后遍历list,对象A永远是最后一个的内容
原因:listlist 在 add()后 存的是对象的引用,所以对象修改了之后,之前add的值也会改变。对象A在堆中首先开辟出一个空间给这个对象,对象的属性在其他地址上,所以每次改的值都是其他地址上的值,对于该对象的引用没有改变,因此值会是最后一个。
解决方法是在for循环内新建new对象
1.4eclipse新增jar包
三个地方要改
1.5Tomcat内存溢出的原因
这里根据平时遇到的情况和相关资料进行一个总结。常见的一般会有下面三种情况:
OutOfMemoryError: Java heap space
OutOfMemoryError: PermGen space
OutOfMemoryError: unable to create new native thread.
Tomcat内存溢出解决方案
对于前两种情况,在应用本身没有内存泄露的情况下可以用设置tomcat jvm参数来解决。
-Xms1024M -Xmx4096M -XX:PermSize=1024m -XX:MaxPermSize=4096m
最后一种可能需要调整操作系统和tomcat jvm参数同时调整才能达到目的。
参考文章:
https://blog.csdn.net/weixin_...
1.6 The code of method _jspService(HttpServletRequest, HttpServletResponse) is exceeding the 65535 bytes limit
方法1、修改include方式
将<%@ include file=" "%>
改为:<jsp:include page=" " />
方法2、修改 Tomcat 的web.xml配置文件,添加如下配置
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>mappedfile</param-name>
<param-value>false</param-value>
</init-param>
</servlet>
//mappedfile : 是否对每个输入行都用一条print语句来生成静态内容,以方便调试。缺省为true。
//这样做,只是让Tomcat不为JSP每行都添加print语句,但是实际上,当文件达到一定程度,还是会发生错误,所以最根本的还是尽量减小JSP大小。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。