精华内容
下载资源
问答
  • 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 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;
    	}

     

    展开全文
  • 过程如下:括号里是进去的begin和end参数,而后面跟的数字是进入之后需要循环的次数。这个程序也更让我理解了,递归程序的过程:好比是一个人在执行任务,在执行过程中有很多分叉,如果有分叉的情况,就分叉的情况...

    程序实际很简单,是一个递归的过程。过程如下:

    8b31417acf8d54fcc0cdd33b7de397d9.png

    括号里是传进去的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);

    }

    }

    }

    }

    展开全文
  • 查询条件为 parentId ... 第一次调用 0,表示根 getNode(0); public void getNode(int pid){ List list = ..查询...(pid); //执行查询,自己写吧 if(list !=null &amp;&amp; list.size()!=0){//判断...

    查询条件为 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查询子 
         } 
      } 
    }

    展开全文
  • 话不多说先上关键代码 先是划分部分的代码 public List quicksort(List list) {//对传入的列表开始划分。 int mind; List left = new ArrayList();... List right = new ArrayList();... 2) {//...
  • 调用下面这个方法的时候把一个File文件进去就可以了 public void getAllFiles(File file) { File[] listFiles = file.listFiles(); for (File file2 : listFiles) { if (file2.isDirectory()) { System....
  • 后来是通过先把目录下所有的文件和文件夹列一遍,放到两个List中,另一端按照相应的结构创建目录,再接收来的socket。 所以顺手又写了写递归与非递归处理目录的代码。 [code="java"] public void ...
  • 1.6 多类型传值和冗余参数元组和列表list1 = [1,2]def fun(x,y):print x,yfun(*list1) \\tuple和list可以加个*来直接传参,注意参数的个数要一直,注意多个参数的时候*必须放在赋值参数后面list1 = [1,2]def fun(x...
  • 数字全排列返回listlistjava实现

    千次阅读 2017-10-01 17:05:08
    括号里是进去的begin和end参数,而后面跟的数字是进入之后需要循环的次数。 这个程序也更让我理解了,递归程序的过程: 好比是一个人在执行任务,在执行过程中有很多分叉,如果有分叉的情况,就分叉的情况扔到栈中...
  • 我想用递归的方法实现某些功能,但是不想让方法修改进来的list的属性 也就是说,增加元素只是在这个方法之中起作用,在其他方法中无效,请问怎么做到呢? 那个remove是我后来写上去的,但是有些...
  • 然后给下面的某个方法调用实现:先把所有的xml文件通过递归读取出来 ,存放到List中,然后以文件名为Key,文件(文件路径+文件名)为Value,存放到Map中,供后面程序调用代码如下:importjava.io.File;importjava....
  • 实现:先把所有的xml文件通过递归读取出来 ,存放到List中,然后以文件名为Key,文件(文件路径+文件名)为Value,存放到Map中,供后面程序调用 代码如下: import java.io.File; import java.util.ArrayList; ...
  • java源码包---java 源码 大量 实例

    千次下载 热门讨论 2013-04-18 23:15:26
     Java局域网通信——飞鸽书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...
  • java源码包2

    千次下载 热门讨论 2013-04-20 11:28:17
     Java局域网通信——飞鸽书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...
  • java源码包3

    千次下载 热门讨论 2013-04-20 11:30:13
     Java局域网通信——飞鸽书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...
  • java源码包4

    千次下载 热门讨论 2013-04-20 11:31:44
     Java局域网通信——飞鸽书源代码,大家都知道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:40
     Java局域网通信——飞鸽书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...
  • Java局域网通信——飞鸽书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽Java局域网通信——飞鸽书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽书软件,但是Java版的确实不多,因此这个Java...
  • Java局域网通信——飞鸽书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽Java局域网通信——飞鸽书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽书软件,但是Java版的确实不多,因此这个Java...
  • Java局域网通信——飞鸽书源代码 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 ...
  • 创建一个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 杨辉三角 ...
  • 经典的面试题目,思路是递归中序遍历,每次递归返回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...
  • 最近要开发一个需求,将数据库里面的列表组成一棵树形给前端。首先我想到的是逐个递归放进去,但是尝试了半天,结果...import java.util.List; /** * @Author: zxy * @Description: * @Date: 2020/9/29 16:56 *

空空如也

空空如也

1 2 3
收藏数 45
精华内容 18
关键字:

java递归传list

java 订阅