- 浏览: 291613 次
- 性别:
- 来自: 杭州
博客专栏
-
Java面试
浏览量:0
文章分类
- 全部博客 (133)
- Struts2 (4)
- Hibernate (2)
- Spring (3)
- Java常识小积累 (18)
- Linux (6)
- Oscache (1)
- 面试技巧 (2)
- Eclipse (4)
- JavaScript (21)
- 生活 (7)
- Mysql (3)
- 网络优秀文章 (1)
- Freemaker (1)
- Tcp和UDP (1)
- ubuntu -java (1)
- Oracle (14)
- 重构 (1)
- webservice (4)
- Lucene (1)
- UML与OOA/D (1)
- 软件杂谈 (2)
- Nosql(Redis) (1)
- 团队开发 (1)
- Oracle 设计 (1)
- velocity (1)
- 面试那些事儿 (1)
- 技术 (1)
- 互联网 (1)
- 数据库 (1)
- jquery (1)
- java (2)
- fastjson (1)
- Remoting (1)
- 算法 (1)
- 学习技巧 (1)
- POI (3)
- FusionCharts (1)
- 学习资源 (1)
- 设计模式 (2)
- CSS (1)
- 技术边缘 (3)
- 生活感想 (0)
- JVM (1)
- JSON (0)
- 前端 (1)
- cxf (1)
- 分布式 (1)
- 阿萨德飞 (0)
- Java面试中的知识 (2)
- redis (1)
- 开发工具使用 (3)
最新评论
-
liushimiao0104:
请问下怎么删除word里面的图片呢
POI向word添加图片,表格 -
chpn:
addBatch确实可以1.这个和复合索引没得毛关系2.in查 ...
mysql 超1亿数据,优化分页查询 -
步青龙:
dagf113225 写道请问,这个mysql执行SQL的花费 ...
mysql 超1亿数据,优化分页查询 -
dagf113225:
请问,这个mysql执行SQL的花费的时间的工具叫什么?谢谢! ...
mysql 超1亿数据,优化分页查询 -
步青龙:
white_crucifix 写道我怎么觉得builder模式 ...
Builder设计模式
题目需要做的有2个功能
1 根据一个字符串数组 求出连续且相同的数组的起始和结束位置
2 b参考数组a,a数组中的相同且连续的字符串如"hi"的起始和结束位置分别为x,y那么就在数组b中求出x-y中的相同且连续的字符的起始和结束位置(数组a中相等且连续的字符可能很多,a中的一个x-y区间 对应在b中也可能有多个相同且连续的字符)。根据a相等且连续的区间求出b中相等且连续的字符的起始和结束位置。
这个基础的算法,奠定了java对excel合并单元格的思想。
public static void main(String[] args) { int[] lon = new int[] {1,1,1,3,4,5,6,6,6,7,88,88,99}; int b = 0; int start = 0; int end = 0; for (int i = 0; i < lon.length; i++) { if (b != lon[i] && b != 0) { if(start==(i-1)){ System.out.println("数字 "+ b + " 起始位置和结束位置相同("+start+")"); }else{ System.out.println("数字 "+ b + " 起始位置为 " + start + " 结束位置为 "+ (i-1)); } } end = i; if (b != lon[i]){ b = lon[i]; start = i; } if (end == lon.length - 1) { if(start==i){ System.out.println("数字 "+ b + " 起始位置和结束位置相同("+start+")"); }else{ System.out.println("数字 "+b+ " 起始位置为 " + start + " 结束位置为 " + i); } } } }
修改完整:
import java.util.HashMap; import java.util.Iterator; import java.util.Map; public class MergeUtil { public Map getMixture(int referStart,int referEnd,int toStart,int toEnd){ Map map = null; if(!(referEnd < toStart) && !(referStart > toEnd)){ // 判断是否有交集 map = new HashMap(); if(referStart>=toStart){// 如果有交集最小值取最大值 map.put("min", referStart); }else{ map.put("min", toStart); } if(referEnd>=toEnd){ //如果有交集最大值取最小值 map.put("max", toEnd); }else{ map.put("max", referEnd); } } return map; } /* * 无参照 */ public Map getColumn(String[] comlumnData,String startkey, String endkey) { Map map = new HashMap(); String temp = "^&*"; int start = 0; int end = 0; for (int i = 0; i < comlumnData.length; i++) { if (i>0){ if (i < comlumnData.length - 1 && temp.equals(comlumnData[i - 1]) && !temp.equals(comlumnData[i])) { start = i; } else { if (!temp.equals(comlumnData[i])) { // 最后一个 start = i; } } end = i; } temp = comlumnData[i]; map.put(startkey + comlumnData[i], new ExportBean(startkey + comlumnData[i], start, end)); } return map; } /* * 有参照列 */ public Map referenceToColumn(String[] reference,String[] to,String referenceStart,String referenceEnd,String toStart,String toEnd) { Map temp = new HashMap(); Map referenceMap = getColumn(reference,referenceStart,referenceEnd); Map toMap = getColumn(to,toStart,toEnd ); Iterator referenceIter = referenceMap.entrySet().iterator(); Iterator toIter = toMap.entrySet().iterator(); while (referenceIter.hasNext()) { Map.Entry referBeanEntry = (Map.Entry) referenceIter.next(); ExportBean referBean = (ExportBean) referBeanEntry.getValue(); while (toIter.hasNext()) { Map.Entry toBeanEntry = (Map.Entry) toIter.next(); ExportBean toBean = (ExportBean) toBeanEntry.getValue(); Map mixture = getMixture(referBean.getStart(),referBean.getEnd(), toBean.getStart(), toBean.getEnd()); if(mixture!=null && mixture.get("min")!=mixture.get("max")){ toBean.setStart((Integer)mixture.get("min")); toBean.setEnd((Integer)mixture.get("max")); temp.put(toBean.getKeyname(), toBean); System.out.println("有参照的列------" + toBean.getKeyname() + "--------"+ toBean.getStart() + "----------" + toBean.getEnd()); } /* if(toBean.getStart()>=referBean.getStart()&& toBean.getEnd()<=referBean.getEnd() && !(toBean.getStart()==toBean.getEnd())){ System.out.println("有参照的列------" + toBean.getKeyname() + "--------"+ toBean.getStart() + "----------" + toBean.getEnd()); dosomething temp.put(toBean.getKeyname(), toBean); }*/ } toIter = toMap.entrySet().iterator(); } return temp; } public static void main(String[] args) { /* String[] reference = new String[]{"1","1","1","1","1","1","1","1","1","2"};// 参考列 String[] to = new String[]{"1","1","1","2","2","5","9","9","a","a"}; */ String[] reference = new String[]{"时间","时间","时间","时间","时间","时间","时间","时间2","时间2","时间2"};// 参考列 String[] to = new String[]{"时1","时1","时2","时3","时5","时5","时6","时6","时6","时6"}; MergeUtil m = new MergeUtil(); // 参照列测试 Map mmm = m.referenceToColumn(reference, to, "keyplaceIdStart", "keyplaceIdEnd", "projectStart","projectEnd"); // 无参照咧测试 Map referenceMap = m.getColumn(reference, "cStart", "cEnd"); Iterator referenceIter = referenceMap.entrySet().iterator(); while (referenceIter.hasNext()) { Map.Entry referBeanEntry = (Map.Entry) referenceIter.next(); ExportBean referBean = (ExportBean) referBeanEntry.getValue(); System.out.println("无参照的列: "+ referBean.getKeyname()+" "+ referBean.getStart()+ " "+ referBean.getEnd()); } } } class ExportBean { private String keyname; private int start = 0; private int end = 0; public ExportBean(String keyname, int start, int end) { this.keyname = keyname; this.start = start; this.end = end; } public String getKeyname() { return keyname; } public void setKeyname(String keyname) { this.keyname = keyname; } public int getStart() { return start; } public void setStart(int start) { this.start = start; } public int getEnd() { return end; } public void setEnd(int end) { this.end = end; } }
下面再次修改如下,现在看着清爽很多而且还去掉了一些bug。
public class MergeUtils { int start = 0; public List getColumn(List list,String[] comlumnData) { for (int i = 0; i < comlumnData.length; i++) { if (i>0 && !comlumnData[i-1].equals(comlumnData[i])) // 当前值与上一个值不同 start = i; if(start!=i && !(i<(comlumnData.length-1) && comlumnData[i].equals(comlumnData[i+1]))) list.add(new Export(start,i)); } return list; } /* * 有参照列 */ public List referenceToColumn(String[] reference, String[] to) { String[] comlumnData = new String[to.length]; for(int i=0;i<comlumnData.length;i++) comlumnData[i] = reference[i]+to[i]; return getColumn(new ArrayList(),comlumnData); } public static void main(String[] args) { String[] reference = new String[] { "时间", "时间", "时间","时间","时间","时间", "时间", "时间2","时间2","时间" };// 参考列 String[] to = new String[] { "时1", "时1", "时2", "时3", "时5", "时5", "时6","时6", "时6", "时7" }; MergeUtils m = new MergeUtils(); List mmm = m.referenceToColumn(reference, to); Iterator ite = mmm.iterator(); while(ite.hasNext()){ Export ex = (Export)ite.next(); System.out.println("开始:" + ex.getStart() + " 结束:" + ex.getEnd()); } } } class Export { private int start = 0; private int end = 0; public Export(int start, int end) { this.start = start; this.end = end; } public int getStart() { return start; } public void setStart(int start) { this.start = start; } public int getEnd() { return end; } public void setEnd(int end) { this.end = end; } }
发表评论
-
双色球数据抓入Mysql
2013-04-12 18:45 17341 mysql5.1 创建表 -- 创建表 id,开 ... -
从零学Java-Java简介
2013-02-28 15:06 27Java的发展史可百度获得 从零学 ... -
疑难杂症-itext 横纵混编
2013-02-26 16:20 1290POI在word处理写的能力很差,所以不适合生成复杂 ... -
itext对word处理合并单元格,处理图片,文档结构图
2013-01-18 16:29 7757效果: 代码: package com.aa ... -
Java与Javascript 最近值
2013-01-16 14:55 1730Double price = 19.0000; ... -
Java数学运算中 电脑计算和人的思维模式的差别
2012-12-13 15:31 8大多数情况下还是人的思维模式下的运算要快点。 怪状1: ... -
重构的重要性大于架构
2012-12-01 20:58 1690此文仅仅是个人理解。 架构和重构从本质上讲 ... -
Java基础误区
2012-08-12 01:36 9521 import java.util.Date; ... -
BigDecimal
2012-07-02 14:37 1074BigDecimal a = new BigDec ... -
朝花夕拾,Java基础回顾
2011-11-15 09:48 1069byte 在编译的时候最大可以多大?为什么? 为什么成员变量 ... -
ubuntu安装java
2011-07-04 04:23 13221:下载jdk ,比如:jdk-6u26-linux-i586 ... -
TCP和UDP
2011-07-01 16:43 1140TCP: Server端 try { Serve ... -
面试-编程-质数
2011-06-22 02:15 1106第一种算法 public static boolea ... -
Refecting in Java
2011-06-02 11:33 1124反射这个东西项目中会用到,如果我有一个Navigatio ... -
博客设计
2011-03-11 12:02 1250设计一个可以承受大访问量的博客表,Mysql数据库。 ... -
静态内部类-静态变量-非静态内部类之间的访问权限
2011-01-10 16:27 34public class Test { //注意静态 ... -
代码规范约定
2010-12-17 10:34 32处理变量,方法,类的命名之外 1必要 ... -
Java基础特殊应用
2010-11-25 16:11 1416古老的代码,java代替goto,代码没有实际的意 ... -
地址图片上传服务器
2010-11-17 14:12 561: 普通的地址图片上传,只能上传普通的地址一般是后缀jpg, ... -
htmlparser应用
2010-10-21 10:41 1612package com.util.md5; imp ...
相关推荐
php根据excel模板导出excel并合并单元格,根据模板导出会少写很多样式的代码,非常方便
C#合并EXCEL单元格,C#纵向合并EXCEL相同内容单元格
excel计算合并单元格所占行数
vb编程遍历Excel中所有单元格,读取出所有单元格内容
poi导入/导出Excel表格,合并单元格的读取和设置
Python操作Excel示例代码.zip - 常用函数、操作行、列、单元格、写入Excel。Python操作Excel示例代码.zip - 常用函数、操作行、列、单元格、写入Excel。Python操作Excel示例代码.zip - 常用函数、操作行、列、单元格...
对于合并列单元格的excel,分页打印时,列单元格的内容可能只显示在第二页,显示格式不友好。针对这一问题,对每一页的列单元格需要分别进行合并操作。附件中的vba代码就解决了这个问题。把代码复制到宏,运行即可。
java excel poi合并单元格
delphi 如何获得EXCEL文件内指定单元格内容delphi 如何获得EXCEL文件内指定单元格内容
poi生成excel及合并单元格示例,详见文章http://blog.csdn.net/geloin/article/details/17219885
使用Excel命令按钮设置单元格格式.rar,介绍最常见的控件——命令按钮(CommandButton),见本例“使用命令按钮控件设置单元格格式”。
EXCEL获取多匹配单元格值 & VLOOKUP多条件查找
office excel 按条件锁定指定单元格
C#读取Excel单元格内容并赋值给text一个简单demo C#读取Excel单元格内容并赋值给text一个简单demo C#读取Excel单元格内容并赋值给text一个简单demo
java合并EXCEL单元格.rarjava合并EXCEL单元格.rarjava合并EXCEL单元格.rarjava合并EXCEL单元格.rarjava合并EXCEL单元格.rarjava合并EXCEL单元格.rarjava合并EXCEL单元格.rarjava合并EXCEL单元格.rarjava合并EXCEL...
excel基本操作,创建,读写,公式设置,判断是否为合并单元格
asp.net C#得到Excel合并单元格行和列及其内容,得到合并单元格的开始行列和结束的行和列。关闭Excel 进程。
利用poi进行excel相同内容合并单元格,只摘要了传入部分功能,请关注addMergedRegion方法
基本的Excel操作,合并单元格,计算行高列管宽,冻结数据。。。相当全面的
Labview 合并Excel多单元格 1-可合并表头,多方面合并,与手工操作一致,批量执行