查询条件为 parentId
select * from table where parentId =?
第一次调用传 0,表示根
getNode(0);
public void getNode(int pid){
List list = ..查询...(pid); //执行查询,自己写吧
if(list !=null && list.size()!=0){//判断是否查到,没有了表示小的了
for(int i=0;i<list.size();i++){
System.out.print(list.get(i).name);
getNode(list.get(i).id); //根据当前id查询子
}
}
}
-
java 无限级递归调用
2019-11-18 18:18:13第一次调用传 0,表示根 getNode(0); public List getNode(int pid){ List list = ..查询...(pid); //执行查询,自己写吧 if(list !=null && list.size()!=0){//判断是否查到,没有了表示小...查询条件为 pid
select * from table where pid =?第一次调用传 0,表示根
getNode(0); public List getNode(int pid){ List list = ..查询...(pid); //执行查询,自己写吧 if(list !=null && list.size()!=0){//判断是否查到,没有了表示小的了 for(int i=0;i<list.size();i++){ System.out.print(list.get(i).name); getNode(list.get(i).id); //根据当前id查询子 } }
-
java读取excel层级结构的递归写法
2020-09-25 14:18:47java poi读取excel这种层级结构的递归写法,思路:同列的循环获取,子级递归获取,想清楚每一个单元格变化的地方,传不同的参数。exel的单元格的值只能先读取行,再获取列。 包括合并单元格的获取并不是有序的,...java poi读取excel这种层级结构的递归写法,思路:同列的循环获取,子级递归获取,想清楚每一个单元格变化的地方,传不同的参数。exel的单元格的值只能先读取行,再获取列。
包括合并单元格的获取并不是有序的,需要根据行列的起始索引来判断是否是合并单元格。每次都要先进行判断。
public List<KnowledgeSystemField> readExcel(String filename, InputStream inputStream) { Workbook workbook = null; try { filename = filepath; String filetype = filename.substring(filename.lastIndexOf(".") + 1, filename.length()); File excelfile = new File(filename); if (!excelfile.exists()) { log.info("路径为" + filename + "的文件不存在!"); return null; } inputStream = new FileInputStream(excelfile); workbook = getWorkBook(inputStream, filetype); // 读取excel中的数据 addRowKLevel(workbook); List<KnowledgeSystemField> resultDataList = null; // resultDataList = parseExcel(workbook); return resultDataList; } catch (Exception e) { log.warn("解析Excel失败,文件名:" + filename + " 错误信息:" + StrFunc.exception2str(e)); return null; } finally { try { if (null != workbook) { workbook.close(); } if (null != inputStream) { inputStream.close(); } } catch (Exception e) { log.warn("关闭数据流出错!错误信息:" + e.getMessage()); return null; } } } public Workbook getWorkBook(InputStream in, String filetype) throws Exception { Workbook workbook = null; if (StrFunc.compareStr(filetype, XLS)) { workbook = new HSSFWorkbook(in); } else if (StrFunc.compareStr(filetype, XLSX)) { workbook = new XSSFWorkbook(in); } return workbook; } public void addRowKLevel(Workbook workbook) { Sheet sheet = workbook.getSheetAt(0); if (sheet == null) { return; } int startRow = STARTROW; int endRow = sheet.getLastRowNum(); endRow = 26; String dirId = ""; getCellValue(startRow, endRow, 1, sheet, dirId); } public void getCellValue(int firstRowIndex, int lastRowIndex, int column, Sheet sheet, String dirid) { if (column > 4) { return; } int lastRow = firstRowIndex; JSONObject multiRow = isMultiRow(firstRowIndex, lastRowIndex, column, sheet); if (multiRow.getBoolean("isMulti")) { lastRow = multiRow.getInt("lastRow"); } while (lastRow <= lastRowIndex) { Cell cell = sheet.getRow(firstRowIndex).getCell(column); String knowId = addKnowOrGroup(column, dirid, cell); getCellValue(firstRowIndex, lastRow, column + 1, sheet, StrFunc.isNull(knowId) ? dirid : knowId); firstRowIndex = lastRow + 1; lastRow = firstRowIndex; multiRow = isMultiRow(firstRowIndex, lastRowIndex, column, sheet); if (multiRow.getBoolean("isMulti")) { lastRow = multiRow.getInt("lastRow"); } } } public JSONObject isMultiRow(int firstRowIndex, int lastRowIndex, int column, Sheet sheet) { JSONObject obj = new JSONObject(); obj.put("isMulti", false); List<CellRangeAddress> mergedRegions = sheet.getMergedRegions(); for (int j = 0; j < mergedRegions.size(); j++) { CellRangeAddress cr = mergedRegions.get(j); int firstColumn = cr.getFirstColumn(); int lastColumn = cr.getLastColumn(); int firstRow = cr.getFirstRow(); int lastRow = cr.getLastRow(); if (firstColumn == lastColumn && firstColumn == column) { if (firstRowIndex == firstRow && lastRow <= lastRowIndex) { obj.put("isMulti", true); obj.put("lastRow", lastRow); break; } } } return obj; } private String addKnowOrGroup(int column, String dirid, Cell cell2) { String knowId = ""; String cellvalue = convertCellValueToString(cell2); if (!StrFunc.isNull(cellvalue)) { boolean ifKnowExist = ifKnowExist(cellvalue); if (!ifKnowExist) { if (column == 1) {// 第一级分组 knowId = addGroup(cellvalue, this.knowledgeSetId); } else if (column == 4) {// 最后一级图谱 knowId = addKnowWithName(cellvalue, dirid); } else { knowId = addGroup(cellvalue, dirid); } } } return knowId; }
-
java 构建 数字 list_数字全排列返回list的list:java实现
2021-03-12 20:55:18过程如下:括号里是传进去的begin和end参数,而后面跟的数字是进入之后需要循环的次数。这个程序也更让我理解了,递归程序的过程:好比是一个人在执行任务,在执行过程中有很多分叉,如果有分叉的情况,就分叉的情况...程序实际很简单,是一个递归的过程。过程如下:
括号里是传进去的begin和end参数,而后面跟的数字是进入之后需要循环的次数。
这个程序也更让我理解了,递归程序的过程:
好比是一个人在执行任务,在执行过程中有很多分叉,如果有分叉的情况,就分叉的情况扔到栈中去,因为栈是先进后出的,所以用栈符合要求。同地位的分叉总有先后顺序,这个人走到第一个分叉的第一个分叉,一直到第一个到达的终点,到达终点后,到栈中去看分叉情况,如果还有分叉就继续执行到下一个终点。重点在于到了终点就返回上一层(返回到上一层调用的函数那行),完成上一层没有执行完的工作,如果上一层没事了,就看上一层的上一层,以此类推。
开始我有疑问,递归函数中,对数组的引用一直是同一个引用,但还一直在swap,这样能对吗?原来是每次循环中,最后一行又把交换的元素换回来了,这样就为下一次循环,即同地位的分叉做好了准备。
代码如下:
package mianshi;
import java.util.ArrayList;
import java.util.List;
public class pailie {
public static List> permute(int[] nums)
{
List> all=new ArrayList>();
allSort(nums, 0, nums.length-1, all);
return all;
}
public static void allSort(int[] array,int begin,int end,List> all)
{
if(begin==end){
List origi=new ArrayList();
for(int a:array)
{
origi.add(a);
}
all.add(origi);
return;
}
for(int i=begin;i<=end;i++){
swap(array,begin,i );
allSort(array, begin+1, end,all);
swap(array,begin,i );
}
}
public static void swap(int[] array,int a,int b){
int tem=array[a];
array[a]=array[b];
array[b]=tem;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] a={1,2,3,4};
permute(a);
for(List b:permute(a))
{
for(int c:b)
{
System.out.println(c);
}
}
}
}
-
Java树形菜单的递归实现
2015-03-12 17:47:16查询条件为 parentId ... 第一次调用传 0,表示根 getNode(0); public void getNode(int pid){ List list = ..查询...(pid); //执行查询,自己写吧 if(list !=null && list.size()!=0){//判断... -
使用列表和递归完成快速排序(java)
2019-04-28 18:38:26话不多说先上关键代码 先是划分部分的代码 public List quicksort(List list) {//对传入的列表开始划分。 int mind; List left = new ArrayList();... List right = new ArrayList();... 2) {//传... -
java基础_简单的递归遍历输出文件夹名字及文件名
2016-08-30 19:42:24调用下面这个方法的时候把一个File文件传进去就可以了 public void getAllFiles(File file) { File[] listFiles = file.listFiles(); for (File file2 : listFiles) { if (file2.isDirectory()) { System.... -
递归与非递归操作目录
2012-12-21 18:58:18后来是通过先把目录下所有的文件和文件夹列一遍,放到两个List中,另一端按照相应的结构创建目录,再接收传来的socket。 所以顺手又写了写递归与非递归处理目录的代码。 [code="java"] public void ... -
java冗余缺省参数值赋值_1.6 多类型传值和冗余参数 1.7 函数的递归调用
2021-03-17 21:07:111.6 多类型传值和冗余参数元组和列表list1 = [1,2]def fun(x,y):print x,yfun(*list1) \\tuple和list可以加个*来直接传参,注意参数的个数要一直,注意传多个参数的时候*必须放在赋值参数后面list1 = [1,2]def fun(x... -
数字全排列返回list的list:java实现
2017-10-01 17:05:08括号里是传进去的begin和end参数,而后面跟的数字是进入之后需要循环的次数。 这个程序也更让我理解了,递归程序的过程: 好比是一个人在执行任务,在执行过程中有很多分叉,如果有分叉的情况,就分叉的情况扔到栈中... -
Java:如何向方法中传递list,而不改变list的属性?
2019-05-28 20:11:38我想用递归的方法实现某些功能,但是不想让方法修改传进来的list的属性 也就是说,增加元素只是在这个方法之中起作用,在其他方法中无效,请问怎么做到呢? 那个remove是我后来写上去的,但是有些... -
java根据文件路径读取文件_java通过文件路径读取该路径下的所有文件并将其放入list中...
2021-02-12 23:57:12然后传给下面的某个方法调用实现:先把所有的xml文件通过递归读取出来 ,存放到List中,然后以文件名为Key,文件(文件路径+文件名)为Value,存放到Map中,供后面程序调用代码如下:importjava.io.File;importjava.... -
java通过文件路径读取该路径下的所有文件并将其放入list中
2018-12-04 16:59:00实现:先把所有的xml文件通过递归读取出来 ,存放到List中,然后以文件名为Key,文件(文件路径+文件名)为Value,存放到Map中,供后面程序调用 代码如下: import java.io.File; import java.util.ArrayList; ... -
java源码包---java 源码 大量 实例
2013-04-18 23:15:26Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和... -
java源码包2
2013-04-20 11:28:17Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和... -
java源码包3
2013-04-20 11:30:13Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和... -
java源码包4
2013-04-20 11:31:44Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和... -
java中过滤查询文件
2018-06-02 22:45:00通过实现FileFilter接口 定义过滤规则,然后将这个实现类对象传给ListFiles方法作为参数即可。 使用递归方法实现 package demo03; /** * 写一个实现FileFilter的类,定义过滤规则 */ import java.io.File;... -
JAVA上百实例源码以及开源项目
2016-01-03 17:37:40Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和... -
JAVA上百实例源码以及开源项目源代码
2018-12-11 17:07:42Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书 Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java... -
成百上千个Java 源码DEMO 4(1-4是独立压缩包)
2017-03-29 17:40:59Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书 Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java... -
成百上千个Java 源码DEMO 3(1-4是独立压缩包)
2017-03-29 17:39:54Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书 Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java... -
java范例开发大全
2013-03-08 20:06:54实例18 Java中的递归 31 实例19 男生女生各多少人 32 实例20 求水仙花数 34 实例21 求任意一个正数的阶乘 35 实例22 求n的n次方 35 实例23 利用for循环输出几何图形 36 实例24 杨辉三角 38 3.3 while语句 39 实例25 ... -
java 三个字母组合_每天AC系列(三):电话号码的字母组合
2021-03-15 22:34:16创建一个Map映射对应的字母,然后把它传给递归函数,同时创建一个临时变量temp,保存每一次添加字母的结果,递归的结束条件是数字串的长度为0.public void one(String digits,List result,HashMap ss,Strin... -
java范例开发大全源代码
2011-10-30 23:31:51实例18 Java中的递归 31 实例19 男生女生各多少人 32 实例20 求水仙花数 34 实例21 求任意一个正数的阶乘 35 实例22 求n的n次方 35 实例23 利用for循环输出几何图形 36 实例24 杨辉三角 ... -
二叉搜索树转换为双向链表 binary search tree to double-linked list
2013-08-16 17:19:02经典的面试题目,思路是递归中序遍历,每次递归返回linked list中最后的一个元素lastNode,每次递归调用过程中要接受lastNode作为参数,因为是中序遍历,所以将lastNode作为参数传进去之后,总是先访问到最小的node... -
Java范例开发大全 (源程序)
2011-04-27 07:47:22实例18 Java中的递归 31 实例19 男生女生各多少人 32 实例20 求水仙花数 34 实例21 求任意一个正数的阶乘 35 实例22 求n的n次方 35 实例23 利用for循环输出几何图形 36 实例24 杨辉三角 38 ... -
java范例开发大全(pdf&源码)
2013-07-04 13:04:40实例18 Java中的递归 31 实例19 男生女生各多少人 32 实例20 求水仙花数 34 实例21 求任意一个正数的阶乘 35 实例22 求n的n次方 35 实例23 利用for循环输出几何图形 36 实例24 杨辉三角 38 3.3 while语句 39 实例25 ... -
Java范例开发大全(全书源程序)
2013-04-05 11:50:26实例18 Java中的递归 31 实例19 男生女生各多少人 32 实例20 求水仙花数 34 实例21 求任意一个正数的阶乘 35 实例22 求n的n次方 35 实例23 利用for循环输出几何图形 36 实例24 杨辉三角 38 3.3 while语句 39... -
list列表根据父子关系组成树形实例
2020-09-30 16:14:38最近要开发一个需求,将数据库里面的列表组成一棵树形传给前端。首先我想到的是逐个递归放进去,但是尝试了半天,结果...import java.util.List; /** * @Author: zxy * @Description: * @Date: 2020/9/29 16:56 *